在Mac OS上使用html打开默认的Mail应用程序

时间:2015-05-04 09:57:33

标签: python html macos email

我试图在Mac OS(以及其他操作系统上启动默认邮件应用程序,但我只在Mac上遇到问题),已经编写了一封电子邮件。电子邮件正文包含HTML。

body = "<span style='font-weight:bold'>Title : </span>{}</br> \
        <span style='font-weight:bold'>Journal : </span>{}</br></br> \
        <span style='font-weight:bold'>Abstract : </span></br></br>{}"

body = body.format(title, journal, abstract)
url = "mailto:?subject={}&body={}"
url = url.format(title, body)

if sys.platform=='win32':
    os.startfile(url)

elif sys.platform=='darwin':
    subprocess.Popen(['open', url])

else:
    # Create an url to be opened with a mail client
    try:
        subprocess.Popen(['xdg-email', url])
    except OSError:
        self.l.error("shareByEmail: OSError")

在Windows和Linux上,此代码只打开默认邮件应用程序,并填充所有字段。电子邮件已准备好发送,html标签不可见(标签正确翻译成格式化文本)。

但是在Mac OS上,电子邮件的正文是一个简单的文本,html标签完全可见(文本未格式化)。

是邮件客户端的设置问题吗?这应该发生吗?我们可以在Mac OS上的电子邮件正文中编写HTML吗?

我必须提到一些事情:

  • 我没有在我的计算机上测试此代码(我没有Mac),所以我没有自己设置邮件应用程序

  • 我在测试代码的Mac OS版本是Yosemite,邮件App是默认的(不是雷鸟)

  • 我无法使用网络浏览器模块

1 个答案:

答案 0 :(得分:0)

您尝试做的事情

mailto:网址方案在RFC 6068中定义,其中包含:

  

特殊&#34;身体&#34;表示关联      是信息的主体。 &#34;身体&#34;字段值旨在      包含第一个text / plain body部分的内容      信息。 &#34;身体&#34;伪头字段主要用于      生成用于自动处理的短文本消息(例如      as&#34;订阅&#34;邮件列表的消息),而不是一般的MIME      身体。除了基于UTF-8和。的字符编码      百分比编码,没有额外的编码(例如,base64或      引用可打印;见[RFC2045])用于&#34; body&#34;场价值。      结果,与消息编码有关的标题字段(例如,      内容传输编码)在“邮件”中URI是无关紧要的,必须      被忽略了。 &#34;身体&#34;伪头字段名已注册      IANA用于此特殊目的(参见第8.2节)。

它碰巧适用于你在Windows和Linux上设置的任何默认邮件程序,这意味着那些邮件程序正在做一些非标准的事情,你不应该依赖它。

此外,将整个主体作为命令行参数传递(正如您在所有三个平台上所做的那样)可能会遇到命令行长度的限制,并且许多邮件程序将截断一个太长的{{ 1}}即使它没有触及它们。

同时

  

我们可以在Mac OS的电子邮件正文中写HTML吗?

是的,但没有mailto网址。例如,您可以使用AppleEvents为任何处理&#34;标准邮件套件的邮件程序编写脚本。 (当然包括Mail.app)。请参阅SBSendEmail以获取一些示例代码(在ObjC中,但使用ScriptingBridge,您可以类似地从Python访问),这样做。