我的 Django 应用程序需要以 HTML 格式发送电子邮件。根据官方文档:
在电子邮件中包含多个版本的内容会很有用;典型的例子是发送消息的文本和 HTML 版本。使用 Django 的电子邮件库,您可以使用 EmailMultiAlternatives 类来执行此操作。EmailMessage 的这个子类有一个 attach_alternative() 方法,用于在电子邮件中包含额外版本的消息正文。所有其他方法(包括类初始化)都直接继承自 EmailMessage。
...我想出了以下代码:
from django.core.mail import EmailMultiAlternatives
msg = EmailMultiAlternatives()
msg.sender = "someone@somewhere.com"
msg.subject = subject
msg.to = [target,]
msg.attach_alternative(content, "text/html")
msg.send()
这项工作符合预期。但是,在某些情况下,我需要包含 PDF 附件,为此我在之前添加了以下代码msg.send()
:
if attachments is not None:
for attachment in attachments:
content = open(attachment.path, 'rb')
msg.attach(attachment.name,content.read(),'application/pdf')
虽然这可行 - 所有 PDF 文档都正确附加到电子邮件 - 不想要的副作用是电子邮件的 HTML 内容现在已经消失,我留下了一个空的电子邮件正文,其中附加了 PDF 文档。
我在这里做错了什么?