Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UTF-8 issues #41

Merged
merged 1 commit into from
Jul 3, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
local_settings.py
django_ses.egg-info
dist/*
.DS_Store
2 changes: 1 addition & 1 deletion django_ses/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def send_messages(self, email_messages):
response = self.connection.send_raw_email(
source=source or message.from_email,
destinations=message.recipients(),
raw_message=dkim_sign(message.message().as_string())
raw_message=unicode(dkim_sign(message.message().as_string()), 'utf-8')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If message.message() is already a unicode string, I think this breaks. I don't have my setup so I'm wondering - did you check?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I tried to send a message with unicode characters before the change, I was getting this:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 280: ordinal not in range(128)

My first idea was to apply unicode(msg_body, 'utf-8') before feeding the body to send_mail, but I got:
TypeError: decoding Unicode is not supported
(the message body was already a django.utils.safestring.SafeUnicode string).
This commit fixed it for me (Django 1.4).

By the way, I just found a similar commit elsewhere, this one using smart_unicode:
raw = u'%s' % smart_unicode(message.message().as_string())
michalkwiatkowski/django-database-email-backend@4182926

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

message.message().as_string() always returns type 'str'. dkim.sign() raises a UnicodeError if you convert message into unicode before parsing it to dkim.sign().

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems fine then. I don't suppose we can have a test here? I'll go ahead and merge it in, but if anyone feels testy please ;)

)
message.extra_headers['status'] = 200
message.extra_headers['message_id'] = response[
Expand Down