Django 1.3将为EmailMessage
添加一个“cc”参数,这非常好。如何使用Django 1.2来模拟此操作?从Django发送电子邮件时设置“cc”
首先,我想这一点:
headers = None
if form.cleaned_data['cc_sender']:
headers = {'Cc': sender} # `cc` argument added in Django 1.3
msg = EmailMultiAlternatives(subject, message, sender, recipients, headers=headers)
msg.attach_alternative(replace(convert(message)), 'text/html')
msg.send(fail_silently=False)
这正确设置“抄送”头,但并没有实际发送的翻版。我查看了SMTP.sendmail寻找线索,它似乎将所有收件人作为单个参数(它没有单独的to
,cc
和bcc
参数)。
接下来,我想这:
headers = None
if form.cleaned_data['cc_sender']:
headers = {'Cc': sender} # `cc` argument added in Django 1.3
recipients.append(sender) # <-- added this line
msg = EmailMultiAlternatives(subject, message, sender, recipients, headers=headers)
msg.attach_alternative(replace(convert(message)), 'text/html')
msg.send(fail_silently=False)
这个工作,但意思是,当我点击“回复”(在Gmail中,无论如何)两个地址出现在“收件人”字段。我也尝试设置“Reply-To”标题(至sender
),但这没有什么区别。
必须可以“抄送”地址而不包括也包括包括直接收件人之间的地址。我会怎么做?
复制如果Django的正确设置抄送头的话,好像这个问题可能是在邮件服务器,不知何故。我认为Django本身并不发送消息,它只是将它们后台打印到邮件服务器。 – 2011-01-26 09:48:23
仅供参考,“SMTP.sendmail”只接收一个收件人列表的原因是因为它不关心邮件标题。 SMTP具有“信封地址”,这是一个特定消息要发送到的人,以及各种只用于邮件客户端(例如Thunderbird,Outlook等)的to/cc头文件,用于*构建列表*谁将被发送邮件。所以当发送邮件时,它会发送一个版本,其中包含`to`和`cc`完整的列表到这些列表中的人员列表,第二个版本则发送给所有您想要加入BCC的人员。如果这不清楚,我会进一步解释,但我没有啰嗦。 – 2011-01-26 13:23:51