Django发送的电子邮件中的部分和断行

时间:2015-03-31 00:21:03

标签: python django email smtp character-limit

我开发了一个Django应用程序,可以向不同大学的研究人员发送电子邮件,并帮助他们进行研究。我使用Litmus测试了电子邮件,所有电子邮件都通过了所有测试,完全出现在不同的平台上。此外,我想让那些拥有旧浏览器的人能够看到电子邮件的内容。这就是我使用EmailMultiAlternatives发送文本内容和替代html内容的原因。但是,在我测试电子邮件的其中一所大学里,每个人都收到了不完整的电子邮件。另外在另一所大学,他们收到了破损的电子邮件。如果他们看到断开的超链接,那就非常有问题。

问题与this Stackoverflow page中解释的电子邮件行中的78个字符限制有关。

但是,在Django EmailMultiAlternatives文档中,没有关于如何在EmailMultiAlternatives中添加“格式”或“回复”等标题。我花了一段时间才弄清楚,我发这篇文章是为了帮助别人节省时间。

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

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

1 个答案:

答案 0 :(得分:1)

  

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

实际上,文档非常明确。如果您查看EmailMessage class documentation,它会有以下内容:

  

标题:要放在邮件上的额外标题字典。键是标题名称,值是标题值。这取决于   调用者以确保标题名称和值的格式正确   一封电子邮件。相应的属性是extra_headers。

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

  

发送替代内容类型

     

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

所以,从这里可以清楚地知道你可以在headers中使用EmailMultiAlternatives,因为它只是主EmailMessage类的一个简单抽象。