将标头添加到Django EmailMultiAlternatives

时间:2015-03-30 18:45:24

标签: python django email header smtp

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

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

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

1 个答案:

答案 0 :(得分:1)

早在2015年,OP抱怨说,文档中没有说明,如何在Django mail(django.core.mail)模块中添加诸如“Format”和“Reply-To”之类的标题。但是今天,在使用same documentation link时。我们可以在2018年轻松找到描述和示例:

  

class EmailMessage [source]

     

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

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

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版本的文字。