看来应该有更好的办法。我有一封纯文本邮件,我想把它转换成多部分邮件。我可以这样做:
import commonmark
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.parser import BytesParser
raw_msg = b'''
To: you@example.com
From: me@example.com
Subject: This is a sample
# This should be h1
Something
## This should be h2
Email from markdown? Sweet
'''.strip()
msg = BytesParser().parsebytes(raw_msg)
html = commonmark.commonmark(msg.get_payload())
new_msg = MIMEMultipart()
for key in msg.keys():
new_msg[key] = msg.get(key)
new_msg.attach(MIMEText(msg.get_payload()))
new_msg.attach(MIMEText(html, 'html'))
print(str(new_msg))
这看起来很管用,但对我来说也很笨重。在Python中有没有一种方法可以从我的原始邮件创建一个多部分的电子邮件?还是我做得对?你知道吗
如果您的输入是一个单一部分的电子邮件消息,那么是的,解析它并提取有效负载可能是一种方法。你知道吗
让解析器动态地将消息“转换”为多部分似乎是不可行的,或者定义得特别好。高兴的是,输入是简单的。你知道吗
新消息的外部容器可能应该是显式的
multipart/alternative
;默认类型multipart/mixed
不传递您似乎正在努力寻找的同一消息的变体编码的语义。你知道吗注意,
email
库在python3.5中被正式检修过。您可能希望探索将代码转换为使用较新的EmailMessage
类层次结构,尽管我不认为这会为这个特定用例带来任何直接的好处。总的来说,新的代码库比旧的有点特别的遗留email
库(现在称为compat32
,如在python3.2中一样;在python3.3中已经非正式地引入了大修)更加通用和规范。你知道吗相关问题 更多 >
编程相关推荐