0

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

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

但是,如果我使用 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];

* 编辑 *

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

div {
display:none;
}

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

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

4

1 回答 1

0

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

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

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

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

一些研究表明 mailMessage 显示为“nil”,即使以下代码:

[[mail outgoingMessages] count];

正在返回正确的值 1。

所以理论上,我根本不应该向 Safari 创建的 HTML 电子邮件添加收件人。

为什么它有时有效而其他时候无效,这超出了我的理解。但是当它起作用时,它也会在代码主体中添加格式化标签。我怀疑这只是一个尚未被发现的错误,因为它根本不应该工作。

于 2012-07-12T20:35:33.107 回答