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