Python 被宣传为“包含电池”的语言。所以,我想知道为什么它的标准库不包括对电子邮件的高级支持:
我发现您需要对 MIME 有很多了解才能创建与您在典型电子邮件客户端中可以实现的功能等效的电子邮件,例如处理 HTML 内容、嵌入的图像和文件附件。
为此,您需要对消息进行低级组装,例如:
- 处理
MIMEMultipart
部分,并了解related
,alternate
等。 - 了解文件编码,例如
base64
如果您刚刚了解 MIME 足以组装这样的电子邮件,则很容易陷入陷阱,例如错误的部分嵌套,并创建一些电子邮件客户端可能无法正确查看的消息。
我不需要了解 MIME 就能正确发送电子邮件。高级库支持应该封装所有这些 MIME 逻辑,允许您编写如下内容:
m = Email("mailserver.mydomain.com")
m.setFrom("Test User <test@mydomain.com>")
m.addRecipient("you@yourdomain.com")
m.setSubject("Hello there!")
m.setHtmlBody("The following should be <b>bold</b>")
m.addAttachment("/home/user/image.png")
m.send()
非标准库解决方案是pyzmail
:
import pyzmail
sender=(u'Me', 'me@foo.com')
recipients=[(u'Him', 'him@bar.com'), 'just@me.com']
subject=u'the subject'
text_content=u'Bonjour aux Fran\xe7ais'
prefered_encoding='iso-8859-1'
text_encoding='iso-8859-1'
pyzmail.compose_mail(
sender, recipients,
subject, prefered_encoding, (text_content, text_encoding),
html=None,
attachments=[('attached content', 'text', 'plain', 'text.txt',
'us-ascii')])
是否有任何理由不在“包含电池”标准库中?