在 django 中向密件抄送和抄送发送电子邮件

Posted

技术标签:

【中文标题】在 django 中向密件抄送和抄送发送电子邮件【英文标题】:send email to bcc and cc in django 【发布时间】:2013-06-08 12:09:03 【问题描述】:

views.py

if 'send_email' in request.POST:
    subject, from_email, to = 'Parent Incident Notification',user.email, person.parent_email
    html_content = render_to_string('incident/print.html','person':person,
                                                                 'report':report,
                                                                  ) 
    text_content = strip_tags(html_content) 
    msg = EmailMultiAlternatives(subject, text_content, settings.DEFAULT_FROM_EMAIL, [to])
    msg.attach_alternative(html_content, "text/html")
    msg.send()

以上是发送电子邮件的视图。通过这种方式,我可以将html内容与邮件一起发送,它将电子邮件单独发送到[to]地址,我也想再做一个密件抄送和抄送。我经历了文档中的Emailmessage objects。我不知道如何包含密件抄送和抄送来改变我的观点。

需要帮助。

谢谢

【问题讨论】:

【参考方案1】:

EmailMultiAlternativesEmailMessage 的子类。初始化消息时可以指定bcccc

msg = EmailMultiAlternatives(subject, text_content, from_email, [to_email], bcc=[bcc_email], cc=[cc_email])

【讨论】:

【参考方案2】:

EmailMessage 现在支持ccbcc

https://docs.djangoproject.com/en/1.10/topics/email/#django.core.mail.EmailMessage

【讨论】:

【参考方案3】:

我需要以 HTML 内容为正文的密件抄送,这是我的实现

from django.core.mail import EmailMessage

email = EmailMessage(
            'Subject',
            'htmlBody',
            'from@email.com',
            [to@email.com],
            [bcc@email.com],
            reply_to=['reply_to@email.com']
        )
 email.content_subtype = "html"
 email.send(fail_silently=True)

更多详情请咨询Django docs

【讨论】:

【参考方案4】:

您可以使用文本字段

class Client(models.Model):
        bcc = models.TextField(null=True, blank=True)

像这样输入多封电子邮件(bcc 字段):test1@example.com,test2@example.com

from django.core.mail import EmailMessage

clients= Client.objects.all()
for client in clients:
    subject = client.subject
    content = client.body
    contact_email = client.msg_from
    to = client.msg_to
    bcc_mails = client.bcc
    bcc = bcc_mails.split(",")
    bcc_mails.replace('"', "")
    email = EmailMessage(
        subject,
        content,
        contact_email,
        [to],
        bcc,
        headers='Reply-To': contact_email
    )

【讨论】:

以上是关于在 django 中向密件抄送和抄送发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 swiftmailer 密件抄送多个地址

PHP 电子邮件发送密件抄送

Laravel 邮件密件抄送

Laravel 邮件在添加密件抄送时会发送两次电子邮件

无法通过 Mandrill 发送密件抄送电子邮件(通过 Laravel)

如何使用mailgun php API仅将邮件发送到密件抄送? [复制]