Skip to content

Commit fcd78df

Browse files
authored
Merge pull request #538 from closeio/fix-unicode-headers-in-emails
Fix Unicode headers in emails
2 parents f389b09 + 461d77e commit fcd78df

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

Diff for: src/future/backports/email/base64mime.py

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from __future__ import absolute_import
2929
from future.builtins import range
3030
from future.builtins import bytes
31+
from future.builtins import str
3132

3233
__all__ = [
3334
'body_decode',

Diff for: tests/test_future/test_email_generation.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# -*- coding: utf-8 -*-
2+
"""Tests for email generation."""
3+
4+
from __future__ import unicode_literals
5+
6+
from future.backports.email.mime.multipart import MIMEMultipart
7+
from future.backports.email.mime.text import MIMEText
8+
from future.backports.email.utils import formatdate
9+
from future.tests.base import unittest
10+
11+
12+
class EmailGenerationTests(unittest.TestCase):
13+
def test_email_custom_header_can_contain_unicode(self):
14+
msg = MIMEMultipart()
15+
alternative = MIMEMultipart('alternative')
16+
alternative.attach(MIMEText('Plain content with Únicødê', _subtype='plain', _charset='utf-8'))
17+
alternative.attach(MIMEText('HTML content with Únicødê', _subtype='html', _charset='utf-8'))
18+
msg.attach(alternative)
19+
20+
msg['Subject'] = 'Subject with Únicødê'
21+
msg['From'] = '[email protected]'
22+
msg['To'] = '[email protected]'
23+
msg['Date'] = formatdate(None, localtime=True)
24+
msg['Message-ID'] = 'anIdWithÚnicødêForThisEmail'
25+
26+
msg_lines = msg.as_string().split('\n')
27+
self.assertEqual(msg_lines[2], 'Subject: =?utf-8?b?U3ViamVjdCB3aXRoIMOabmljw7hkw6o=?=')
28+
self.assertEqual(msg_lines[6], 'Message-ID: =?utf-8?b?YW5JZFdpdGjDmm5pY8O4ZMOqRm9yVGhpc0VtYWls?=')
29+
self.assertEqual(msg_lines[17], 'UGxhaW4gY29udGVudCB3aXRoIMOabmljw7hkw6o=')
30+
self.assertEqual(msg_lines[24], 'SFRNTCBjb250ZW50IHdpdGggw5puaWPDuGTDqg==')

0 commit comments

Comments
 (0)