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

Posted

技术标签:

【中文标题】Django 发送的电子邮件中的部分和断行【英文标题】:Partial and Broken Lines in Emails Sent by Django 【发布时间】:2015-06-04 04:42:42 【问题描述】:

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

问题与this *** 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')

【问题讨论】:

考虑总结该链接。甚至 *** 链接也会随着时间的推移而中断。谢谢 清理格式 您可以将您的帖子改写成一个问题,自己回答并接受您的回答。通过这种方式,很明显问题得到了解决,而不是一个永远悬而未决的问题。 非常感谢您在格式化、更正和好建议方面的帮助。我实际上没有回答它,因为我认为我可能是错的,而其他人可能有更好的答案。如您所见,您为我们提供了一个。 请注意,将 'format': 'flowed' 添加到 headers 不会达到您想要的效果。这会将format: flowed 的标题添加到电子邮件标题(没有效果),而您想要将format=flowed 添加到电子邮件的text/plain 版本的Content-Type 【参考方案1】:

然而,在 Django EmailMultiAlternatives 文档中,有 没有关于如何在中添加“格式”或“回复”等标题 电子邮件MultiAlternatives。

实际上,文档对此非常清楚。如果你看EmailMessage class documentation,它有以下内容:

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

然后在它声明的同一页面上进一步向下:

发送替代内容类型

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

所以,从这里很明显你可以在EmailMultiAlternatives 中使用headers,因为它只是主要EmailMessage 类的一个薄抽象。

【讨论】:

你是对的。我没有阅读整个文件是我的错误。你知道,当我在寻找解决方案时,我通常不会从头到尾阅读文档。有时它可以帮助我更快地解决它,有时它是有问题的。我认为其他人可能会面临这样的问题。这就是我发布它的原因。如果您认为没有必要,我们可以删除该帖子。

以上是关于Django 发送的电子邮件中的部分和断行的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中发送带附件的电子邮件

如何使用django设置发送电子邮件的超时时间?

django中的超链接文本发送到电子邮件[重复]

django中的发送邮件功能

如何通过 django 中的contact.html 模板发送电子邮件

在 Django 中发送批量电子邮件