在将收件人添加到邮件时,脚本桥会添加不需要的HTML代码

时间:2012-06-22 03:48:13

标签: xcode cocoa email safari scripting-bridge

好的,所以这个有点奇怪......

我在Safari中有一个HTML页面,我想将其作为电子邮件发送。如果我进入FILE菜单并选择“此页面的邮件内容”,它将按预期传输并且看起来正确。

但是,如果我使用Scripting Bridge将收件人添加到外发邮件中,则会将以下代码添加到邮件内容区域的顶部,以便添加每个收件人。在一个示例中,添加了24个收件人,生成的电子邮件包含以下代码的24个连续重复:

<div style=3D"font-family: = Helvetica; font-size: 12px; color: black; text-align: left;">
<br =class=3D"webkit-block-placeholder"></div>

由于div标记的呈现方式,在电子邮件的开头创建了24个换行符,以便我的HTML从页面的下方开始。

任何人都知道为什么要插入此代码?

以下是我用于Scripting Bridge的代码:

SafariDocument *safariDoc = [[[[safari classForScriptingClass:@"document"] alloc]
initWithProperties:[NSDictionary dictionaryWithObject:@"//private/var/tmp/mail.html" forKey: @"URL"]] autorelease];
    [[safari documents] addObject:safariDoc];

SafariWindow *safariWindow = [[safari windows] objectAtIndex:0];
        [safariWindow emailContentsOf:safariWindow.currentTab];
        mailMessage = [[[mail outgoingMessages] objectAtIndex:0] autorelease];

以下是我用来添加收件人的代码:

MailToRecipient *recipient = [[[[mail classForScriptingClass:@"to recipient"] alloc] 
                                   initWithProperties:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       [preferencesData bandName], @"name",
                                                       [preferencesData bandEmail], @"address",
                                                       nil]] autorelease];
    [[mailMessage toRecipients] addObject:recipient];

*编辑*

我找到了解决这个问题的方法,但我仍然有兴趣知道为什么在添加收件人时这个代码插入到正文中...解决方法如下:我将以下内容插入我的HTML模板的CSS部分......

div {
display:none;
}

因此,显示会忽略html模板中的所有div标签。我仍然有上述代码的24个副本,但它们基本上被忽略了,这解决了我的视觉布局问题。

如果有人有更好的解决方案,请告诉我们!

1 个答案:

答案 0 :(得分:0)

Apple似乎不允许您访问您不“拥有”或已在程序中创建的外发邮件。

在上面的代码中,我试图通过使用Safari“网页的电子邮件内容”来解决Apple不允许您将外发电子邮件设置为HTML(他们不喜欢你做的其他事情)的限制,从而在Apple Mail中创建新的外发邮件。

然后我试图通过分配对变量的引用来控制该消息,如下所示:

mailMessage = [[[mail outgoingMessages] objectAtIndex:0] autorelease];

一些研究显示,即使以下代码,mailMessage也显示为“无”:

[[mail outgoingMessages] count];

返回正确的值1。

因此,理论上,我根本无法将收件人添加到Safari创建的HTML电子邮件中。

为什么它有时会起作用而在其他时候不起作用是超出我的。但是当它确实有效时,它也会在代码体中添加格式化标记。我怀疑它只是一个未被捕获的错误,因为它根本不应该工作。