【发布时间】:2010-10-31 21:25:31
【问题描述】:
我在从我的 django 应用程序发送电子邮件时使用 django.core.mail.EmailMultiAlternatives 以确保在电子邮件客户端不支持 HTML 时邮件降级为文本。
这是我的 send_email 方法:
def send_email(self, from_address, to_list, subject, msg_text, msg_html):
subject=subject.replace('\r','').replace('\n',' ')
self.msg = EmailMultiAlternatives(subject, msg_text, from_address, to_list)
self.msg.attach_alternative(msg_html, "text/html")
self.msg.content_subtype = "html"
self.msg.send()
它适用于 Gmail、Hotmail 和许多其他电子邮件客户端 - 毫无问题地显示 HTML 内容。但它不会显示在 Win2003 上运行的 Outlook 2003 中的 HTML 内容 - 只是文本版本。
如果我强行将 HTML 放入 EmailMultiAlternatives 调用中,即像这样使用 msg_html instead of msg_text:
self.msg = EmailMultiAlternatives(subject, msg_html, from_address, to_list)
那么它在所有客户端都能正常工作;但这意味着对于不支持 HTML 或(更有可能)禁用对它的支持的客户端没有文本回退。
我认为值得一提的是,电子邮件是在 Mac OS X 上运行的 django 应用程序上生成的(以防它与操作系统之间的行终止符差异有关)。
我看到people using other languages 的 Outlook 也有类似的问题...
我想知道是否有人知道为什么 Outlook 的行为会有所不同,是否有可以在我的代码中应用的简单修复?
【问题讨论】: