【问题标题】:Adding headers to Django EmailMultiAlternatives将标头添加到 Django EmailMultiAlternatives
【发布时间】:2015-06-03 22:01:04
【问题描述】:

Django EmailMultiAlternatives documentation 中没有关于如何在EmailMultiAlternatives 中添加诸如“格式”或“回复”之类的标题的内容。我花了一段时间才弄清楚,我发送这篇文章是为了帮助其他人节省时间。

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

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

【问题讨论】:

  • 你应该把它写成一个解决方案。
  • @VanniTotaro 我很欣赏你的建议,我知道我可以通过回答问题获得更多的声誉,但是当我可以将它作为一个简洁的帖子时,我为什么要把它分成两个更长的帖子而浪费其他帖子'时间?
  • 好吧,首先这个问题会变成“已回答”,否则如果我正在寻找答案,我可能会跳过这个问题,因为显然这是一个未回答的问题。此外,我认为这里的规则不鼓励这种 Q+A 帖子模式。顺便说一句,谢谢你,因为我利用了你的好解决方案。

标签: python django email header smtp


【解决方案1】:

早在 2015 年 OP 就抱怨说,文档中没有说明如何在 Django 邮件 (django.core.mail) 模块中添加“格式”和“回复”等标题。然而今天,在使用same documentation link 时。我们很容易找到2018年的描述和例子:

EmailMessage[source]

EmailMessage 使用以下参数初始化 (如果使用位置参数,则按给定顺序)。所有参数 是可选的,可以在调用 send() 之前随时设置 方法。

  • 主题:电子邮件的主题行。
  • body:正文。这应该是纯文本消息。
  • from_email:发件人的地址。 fred@example.comFred <fred@example.com> 表格都是合法的。如果省略,DEFAULT_FROM_EMAIL 使用设置。
  • to:收件人地址的列表或元组。
  • bcc:发送电子邮件时在“Bcc”标头中使用的地址列表或元组。
  • 连接:电子邮件后端实例。如果要对多条消息使用相同的连接,请使用此参数。如果省略,则 调用 send() 时会创建新连接。
  • 附件:要放在邮件中的附件列表。这些可以是 email.MIMEBase.MIMEBase 实例,也可以是 (filename, content, mimetype) 三元组。
  • headers:要放在消息上的额外标题字典。键是标题名称,值是标题值。这取决于 调用者以确保标题名称和值的格式正确 一封电子邮件。对应的属性是extra_headers
  • cc:发送电子邮件时在“抄送”标头中使用的收件人地址列表或元组。

例如:

email = EmailMessage('Hello', 'Body goes here', 'from@example.com',
            ['to1@example.com', 'to2@example.com'], ['bcc@example.com'],
            headers = {'Reply-To': 'another@example.com', 'format': 'flowed'})

正如我们从示例中看到的,EmailMessage 也有 headers 参数(字典),根据source code 中的文档字符串,EmailMultiAlternatives 是:

A version of EmailMessage that makes it easy to send multipart/alternative
messages. For example, including text and HTML versions of the text is
made easier.

因此,如果您不需要特定的内容,EmailMessage 很好,因为目前EmailMultiAlternatives 用于轻松包含文本和 HTML 版本的文本。

【讨论】:

    猜你喜欢
    • 2014-09-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2016-02-15
    相关资源
    最近更新 更多