diff -r 0eba44381d0d tests/test_message.py
|
a
|
b
|
|
| 58 | 58 | subject_string = "Subject: " + str(Header(subject_string, "UTF-8")) |
| 59 | 59 | self.failUnless(subject_string in msg_string) |
| 60 | 60 | |
| 61 | | |
| | 61 | def test_from_with_umlaut(self): |
| | 62 | from_name = u"Karl MÃŒller" |
| | 63 | from_email = u"karl.mueller@mueller.com" |
| | 64 | |
| | 65 | self.message.author = [(from_name, from_email)] |
| | 66 | self.message.encoding = "ISO-8859-1" |
| | 67 | |
| | 68 | msg_string = str(self.message) |
| | 69 | encoded_name = str(Header(from_name, "ISO-8859-1")) |
| | 70 | from_string = "From: %s <%s>" % (encoded_name, from_email) |
| | 71 | self.failUnless(from_string in msg_string) |
diff -r 0eba44381d0d turbomail/message.py
|
a
|
b
|
|
| 218 | 218 | header = list(header) |
| 219 | 219 | if isinstance(header[1], unicode): |
| 220 | 220 | header[1] = Header(header[1], self.encoding) |
| | 221 | elif isinstance(header[1], AddressList): |
| | 222 | header[1] = header[1].encode(self.encoding) |
| 221 | 223 | header[1] = str(header[1]) |
| 222 | 224 | message.add_header(*header) |
| 223 | 225 | elif isinstance(header, dict): |
diff -r 0eba44381d0d turbomail/util.py
|
a
|
b
|
|
| 54 | 54 | return "Address(\"%s\")" % str(self) |
| 55 | 55 | |
| 56 | 56 | def __str__(self): |
| | 57 | return self.encode() |
| | 58 | |
| | 59 | def encode(self, encoding="US-ASCII"): |
| 57 | 60 | assert self.address, "You must specify an address." |
| 58 | | |
| 59 | | return formataddr((self.name, self.address)).replace("\n", "") |
| 60 | | |
| | 61 | name_string = self.name |
| | 62 | if isinstance(name_string, unicode): |
| | 63 | name_string = str(Header(name_string, encoding)) |
| | 64 | return formataddr((name_string, self.address)).replace("\n", "") |
| 61 | 65 | |
| 62 | 66 | |
| 63 | 67 | class AddressList(list): |
| 64 | | def __init__(self, addresses=[]): |
| | 68 | def __init__(self, addresses=[], encoding=None): |
| 65 | 69 | super(AddressList, self).__init__() |
| 66 | 70 | |
| | 71 | self.encoding = encoding |
| 67 | 72 | if isinstance(addresses, (basestring, tuple)): |
| 68 | 73 | addresses = [addresses] |
| 69 | 74 | |
| … |
… |
|
| 75 | 80 | return "AddressList(\"" + "\", \"".join([str(i) for i in self]) + "\")" |
| 76 | 81 | |
| 77 | 82 | def __str__(self): |
| 78 | | return ",\n ".join([str(i) for i in self]) |
| | 83 | return self.encode(self.encoding) |
| | 84 | |
| | 85 | def encode(self, encoding="ascii"): |
| | 86 | addresses = [] |
| | 87 | for address in self: |
| | 88 | addresses.append(address.encode(encoding)) |
| | 89 | return ",\n ".join(addresses) |
| 79 | 90 | |
| 80 | 91 | def __setitem__(self, k, value): |
| 81 | 92 | if not isinstance(value, Address): |