脚本桥、Apple Mail、HTML 和头文件
Posted
技术标签:
【中文标题】脚本桥、Apple Mail、HTML 和头文件【英文标题】:Scripting Bridge, Apple Mail, HTML and Header Files 【发布时间】:2012-06-20 02:44:31 【问题描述】:我已经能够通过脚本桥和苹果邮件破解我的方式,现在可以从我的可可程序发送电子邮件。现在,我正在尝试发送 html 邮件并遇到了障碍。简而言之,我已经生成了一个 NSString,其中包含从打开的 html 标记到 slash-html 关闭标记的整个 HTML 代码,以及介于两者之间的所有好东西。
但是,当我通过脚本桥将其作为内容传递时,我最终得到的只是一封电子邮件,我可以在其中阅读 HTML 代码...我会说它是纯文本,但链接仍然显示为可点击的链接,所以这并不完全正确。
如果我在 Safari 中打开代码,HTML 会正确显示。
我认为这可能与电子邮件中的标题信息有关,但如果有办法通过脚本桥进行设置,我还没有找到方法。同样,由于链接是可点击的,我认为它们可能不是问题?
如果有办法将标头信息设置为“Content-Type: text/html; charset=ISO-8859-1”和“MIME-Version: 1.0”并且任何人都知道如何,请赐教:)
如果没有,有人有什么建议吗?我确定我一定遗漏了一些东西,我希望它很简单。
* 编辑 *
我尝试在 Safari 中打开我的 HTML 文件并使用 FILE>Email Contents,然后在 Apple Mail 中创建一封新电子邮件。这封新电子邮件可以 HTML 格式查看。因此,我知道一定可以做到这一点。
然后我将该电子邮件以及非 html 电子邮件发送给自己。
仅检查两个文件的标题信息后发现,这两封电子邮件的内容类型相同,被列为:
multipart/alternative; boundary="Apple-Mail=_D0859731-3A0F-459E-9673-DEC0FC6503BF"
当然,发送的每封电子邮件的 ID 字符串都不同...
然而,在查看原始源代码时,HTML 文件实际上有第二个内容类型,它在 HTML 代码之前指定“text/html”(我将其解释为 multipart/alternative 只是指示邮件应用程序来寻找额外的内容类型标签...
【问题讨论】:
链接是可点击的,因为邮件客户端使它们可点击,而不是因为它们是实际的锚标记。我没有使用 Objective-C 的经验,但肯定有 Swift Mailer 等价物吗?另外,您是否尝试过使用<!doctype html>
设置文档类型?
@RyanBrodie 我明白了,您是否建议用 !doctype HTML 替换我模板中的打开 HTML 标记?还没试过。会试一试。
@RyanBrodie 不行。好像没什么区别。
【参考方案1】:
这是你需要的:
Open Source Cocoa/Cocoa-Touch POP3/SMTP library?
(邮件函数库)
【讨论】:
查看了这些,但我正在使用的平台 Lion 似乎还不支持它们。建议使用脚本桥。【参考方案2】:据我所知,Apple 不允许您通过脚本桥直接发送 HTML 电子邮件。我可以推测他们对此不满意的原因(垃圾邮件、安全性等),但似乎事实就是如此。
解决方法是在 Safari 中打开 HTML,然后使用 Scripting Bridge 将“此页面的内容通过电子邮件发送到邮件”。这会在 Mail.app 中创建一个包含 HTML 代码的新外发邮件。
注意:然而,我注意到的一个副作用是,当 Safari 创建电子邮件后使用脚本桥将收件人添加到电子邮件时,会为每个收件人创建一个带有内嵌代码的附加 DIV 标记。因此,由于默认设置是在显示的每个 DIV 标记之前和之后添加换行符,因此 HTML 代码在页面下方开始为每个添加的收件人。一种解决方法是在 HTML 代码中使用 CSS 来覆盖 DIV 标记的默认显示行为。我在这里做了更详细的解释:
Scripting Bridge adds unwanted HTML code when adding recipient to mail
【讨论】:
以上是关于脚本桥、Apple Mail、HTML 和头文件的主要内容,如果未能解决你的问题,请参考以下文章