- March 6, 2008
- mail emailmessage email message smtp cc
- 4 (after 6 ratings)
Django EmailMessage class has no cc support and has bug in bcc support.
Core developers won't add cc support (see ticket http://code.djangoproject.com/ticket/5790), and I don't want to wait half a year until they will realize they have a flaw that bcc recipients are sent to regular "to:" recipients and fix it.
So, if you want to use EmailMessage class right now, you'd better use FixedEmailMessage class. Class contract is the same, except for a new cc constructor argument.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
from django.core.mail import EmailMessage class FixedEmailMessage(EmailMessage): def __init__(self, subject='', body='', from_email=None, to=None, cc=None, bcc=None, connection=None, attachments=None, headers=None): """ Initialize a single email message (which can be sent to multiple recipients). All strings used to create the message can be Unicode strings (or UTF-8 bytestrings). The SafeMIMEText class will handle any necessary encoding conversions. """ to_cc_bcc_types = (type(None), list, tuple) # test for typical error: people put strings in to, cc and bcc fields # see documentation at http://www.djangoproject.com/documentation/email/ assert isinstance(to, to_cc_bcc_types) assert isinstance(cc, to_cc_bcc_types) assert isinstance(bcc, to_cc_bcc_types) super(FixedEmailMessage, self).__init__(subject, body, from_email, to, bcc, connection, attachments, headers) if cc: self.cc = list(cc) else: self.cc =  def recipients(self): """ Returns a list of all recipients of the email (includes direct addressees as well as Bcc entries). """ return self.to + self.cc + self.bcc def message(self): msg = super(FixedEmailMessage, self).message() del msg['Bcc'] # if you still use old django versions if self.cc: msg['Cc'] = ', '.join(self.cc) return msg