0

我开发了一个 Django 应用程序来向不同大学的研究人员发送电子邮件并帮助他们进行研究。我使用Litmus测试了电子邮件,所有电子邮件都通过了所有测试并完全显示在不同的平台上。我也想让那些使用旧浏览器的人能够看到电子邮件的内容。这就是我过去EmailMultiAlternatives发送文本内容和替代 html 内容的原因。然而,在我正在测试电子邮件的一所大学中,每个人都收到了不完整的电子邮件。同样在另一所大学,他们收到了带有断线的电子邮件。万一他们看到损坏的超链接,这是非常有问题的。

该问题与此 Stackoverflow 页面中解释的电子邮件行中的 78 个字符限制有关。

但是,在 DjangoEmailMultiAlternatives文档中,没有关于如何在EmailMultiAlternatives. 我花了一段时间才弄清楚,我发送这篇文章是为了帮助其他人节省时间。

正如您在 django 的源代码中看到的那样,EmailMultiAlternatives继承自 EmailMessage,因此它们在 init 构造函数中采用相同的参数。这样,我们可以添加如下标题:

msg = EmailMultiAlternatives(subject, message, from_email, to_list, headers={'Reply-To': "email@example.com", 'format': 'flowed'})
4

1 回答 1

1

但是,在 Django EmailMultiAlternatives 文档中,没有关于如何在 EmailMultiAlternatives 中添加“格式”或“回复”等标题。

实际上,文档对此非常清楚。如果您查看EmailMessage类文档,它具有以下内容:

headers:要放在消息上的额外标题的字典。键是标题名称,值是标题值。由调用者确保标题名称和值采用正确的电子邮件格式。对应的属性是extra_headers。

然后在同一页面上进一步说明:

发送替代内容类型

在电子邮件中包含多个版本的内容会很有用;典型的例子是发送消息的文本和 HTML 版本。使用 Django 的电子邮件库,您可以使用 EmailMultiAlternatives 类来执行此操作。EmailMessage 的这个子类有一个 attach_alternative() 方法,用于在电子邮件中包含额外版本的消息正文。所有其他方法(包括类初始化)都直接继承自 EmailMessage。

因此,从这里可以清楚地看出您可以使用headersin EmailMultiAlternatives,因为它只是对主EmailMessage类的一个薄抽象。

于 2015-03-31T04:22:12.917 回答