我试图在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是默认的(不是雷鸟)
我无法使用网络浏览器模块
答案 0 :(得分:0)
您尝试做的事情
特殊&#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:
网址方案在RFC 6068中定义,其中包含:
mailto
网址。例如,您可以使用AppleEvents为任何处理&#34;标准邮件套件的邮件程序编写脚本。 (当然包括Mail.app)。请参阅SBSendEmail以获取一些示例代码(在ObjC中,但使用ScriptingBridge,您可以类似地从Python访问),这样做。