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
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 10 months, 2 weeks ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months, 3 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
- Help text hyperlinks by sa2812 1 year, 6 months ago
Comments
oh, it was just lucky bug. i did my job, you did yours -- and everyone is happy. and actually, only trunk version is fixed.
#
Please login first before commenting.