大佬教程收集整理的这篇文章主要介绍了如何从Cocoa发送HTML电子邮件?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我首选的工作流程是:用户选择一个菜单项,默认的邮件应用程序打开,前台有一个预先填好的新电子邮件.
我可以使用mailto和 – [NSWorkspace openURL]来处理纯文本电子邮件,但这不适用于HTML电子邮件.
更新:我改进了代码并将其放在GitHub上
- (void)mailWebArchive:(WebArchive *)webArchive title:(NSString *)atitle URL:(NSString *)aURL { NSString *bundlEID = @"com.apple.mail"; NSData* targetBundlEID = [bundlEID dataUsingEncoding:NSUTF8StringEncoding]; NSAppleEventDescriptor *targetDescriptor = nil; NSAppleEventDescriptor *appleEvent = nil; targetDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeApplicationBundlEID data:targetBundlEID]; appleEvent = [NSAppleEventDescriptor appleEventWithEventClass:'mail' eventID:'mlpg' targetDescriptor:targetDescriptor returnID:kAutoGenerateReturnID transactionID:kAnytransactionID]; [appleEvent setParamDescriptor:[NSAppleEventDescriptor descriptorWithDescriptorType:'tdta' data:[webArchive data]] forKeyword:'----']; [appleEvent setParamDescriptor:[NSAppleEventDescriptor descriptorWithString:atitle] forKeyword:'urln']; [appleEvent setParamDescriptor:[NSAppleEventDescriptor descriptorWithString:aURL] forKeyword:'url ']; NSAppleEventDescriptor *replyDescriptor = nil; NSAppleEventDescriptor *errorDescriptor = nil; AEDesc reply = { typeNull,NULL }; // Send the AppleEvent OSStatus status = AESendmessage([appleEvent aeDesc],&reply,kAEWaitReply,kAEDefaultTimeout); if(status == noErr) { replyDescriptor = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&reply] autorelease]; errorDescriptor = [replyDescriptor paramDescriptorForKeyword:keyErrornumber]; if(errorDescriptor != nil) status = [errorDescriptor int32Value]; if(status != noErr) NSLog(@"%s error %d",_cmd,status); } }
此代码不检查Mail是否正在运行,因此它仅在Mail已启动时才起作用.
这种方法的专业方面,它适用于实现MailLinkSupported和MailPageSupported的所有电子邮件客户端.见QA1722.
缺点是你不能像mailto一样设置收件人.为此,ScripTing Bridge似乎是唯一的解决方案.见修改后的SBSendEmail sample.
以上是大佬教程为你收集整理的如何从Cocoa发送HTML电子邮件?全部内容,希望文章能够帮你解决如何从Cocoa发送HTML电子邮件?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。