Hi all, I have this function that helps send emails with attachments:
def send_email(…): … msg = EmailMessage( subject, body, send_from, recipients_list, cc=cc, bcc=bcc, headers={'Reply-To': reply_to}) msg.attach_alternative(html_body, "text/html") for f in files: try: email_fn, path = f except (ValueError, TypeError): path = f _, email_fn = os.path.split(path) with open(path, 'rb') as f: contents = f.read() msg.attach(email_fn, contents) msg.send() In the case where path points to a file with a text mimetype (e.g., 'text/csv'), this fails with this error: AttributeError: 'bytes' object has no attribute 'encode' Here's an excerpt from django.core.mail.message. The error occurs on the line 4. basetype, subtype = mimetype.split('/', 1) if basetype == 'text': encoding = self.encoding or settings.DEFAULT_CHARSET attachment = SafeMIMEText(content, subtype, encoding) elif basetype == 'message' and subtype == 'rfc822': # Bug #18967: per RFC2046 s5.2.1, message/rfc822 attachments # must not be base64 encoded. if isinstance(content, EmailMessage): # convert content into an email.Message first content = content.message() elif not isinstance(content, Message): # For compatibility with existing code, parse the message # into an email.Message object if it is not one already. content = message_from_string(content) attachment = SafeMIMEMessage(content, subtype) else: # Encode non-text attachments with base64. attachment = MIMEBase(basetype, subtype) attachment.set_payload(content) Encoders.encode_base64(attachment) return attachment My question is, why not use base64 encoding if the attachment content is specified as bytes? -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e19dd1f5-751d-4136-9923-ecb14cc7052d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.