gpt4 book ai didi

cocoa - 如何从 cocoa 发送HTML电子邮件?

转载 作者:行者123 更新时间:2023-12-04 13:35:45 25 4
gpt4 key购买 nike

我正在寻找一种从OS X Cocoa应用程序创建HTML格式的电子邮件的方法。

我首选的工作流程是:用户选择一个菜单项,然后打开默认邮件应用程序,并在前台显示一个预填充的新电子邮件。

对于纯文本电子邮件,我可以使用mailto和-[NSWorkspace openURL]来做到这一点,但是对于HTML电子邮件则不起作用。

最佳答案

我也对此感兴趣,因此对Safaris进行了两天的反向工程“此页面的邮件内容”功能,然后我开始使用它。

更新:我改进了代码并将其放在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那样设置收件人。为此,脚本桥似乎是唯一的解决方案。请参阅此修改后的 SBSendEmail sample

关于cocoa - 如何从 cocoa 发送HTML电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com