使用Scripting Bridge沙箱化我的应用程序以发送电子邮件

时间:2011-09-02 17:21:47

标签: objective-c cocoa sandbox

我正在使用脚本桥从我的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];
...

`

4 个答案:

答案 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,并且可以成功撰写电子邮件。似乎无法发送电子邮件,但至少您可以为用户设置所有内容,只需按发送即可。

https://github.com/Whiffer/SBSendEmail

答案 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>