我正在使用脚本桥从我的Mac App发送邮件。现在我需要对应用程序进行沙盒处理,并且在启用沙盒时发送邮件的时间不再有效。
有人知道如何解决这个问题吗?
谢谢, 安德烈亚斯
代码: `
/* create a Scripting Bridge object for talking to the Mail application */
MailApplication *mail = [SBApplication applicationWithBundleIdentifier:@"com.apple.Mail"];
/* create a new outgoing message object */
MailOutgoingMessage *emailMessage =
[[[mail classForScriptingClass:@"outgoing message"] alloc]
initWithProperties:
[NSDictionary dictionaryWithObjectsAndKeys:
[self.subjectField stringValue], @"subject",
[[self.messageContent textStorage] string], @"content",
nil]];
/* add the object to the mail app */
[[mail outgoingMessages] addObject: emailMessage];
...
`
答案 0 :(得分:4)
您无法在启用沙盒的情况下使用ScriptingBridge。请提交错误报告。如果Sandboxing对您来说是一个问题并且没有其他解决方案,这就是Apple推荐的。他们可能会为ScriptingBridge添加权利(不仅仅是临时例外),但截至目前还没有更多信息可供使用。
有Entitlements Keys,尤其是com.apple.security.temporary-exception.apple-events
密钥,您可以添加到Entitlements.plist文件中,但Apple Events的密钥是临时异常。 />
不幸的是,即使设置了正确的权利,我也无法使ScriptingBridge正常工作。我希望你比我幸运。
Apple将要求Sandboxing用于从 11月1日开始提交到Mac App Store的所有应用程序!
com.apple.security.temporary-exception.apple-events
答案 1 :(得分:3)
将此代码添加到您的Entitlements.plist,我测试了没关系。我现在可以从Mail获取选定的邮件。
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.mail</string>
</array>
答案 2 :(得分:2)
我已将Apple的SBSendEmail示例应用程序修改为Sandboxed,并且可以成功撰写电子邮件。似乎无法发送电子邮件,但至少您可以为用户设置所有内容,只需按发送即可。
答案 3 :(得分:-1)
of mac os x 10.8 and later, it has changed:
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.mail</key>
<array>
<string>com.apple.mail.compose</string>
</array>
</dict>