Mercurial > p > roundup > code
annotate roundup/rfc2822.py @ 1655:0feb34b2de71 0.6.0b3
*** empty log message ***
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 09 Jun 2003 23:51:14 +0000 |
| parents | ea1afeb64b45 |
| children | fc52d57c6c3e 1d86402ce5e8 |
| rev | line source |
|---|---|
|
1383
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
1 import re |
|
1628
ea1afeb64b45
more pedantic rfc2822 header qp encoding
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1439
diff
changeset
|
2 from string import letters, digits |
|
1383
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
3 from binascii import b2a_base64, a2b_base64 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
5 ecre = re.compile(r''' |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
6 =\? # literal =? |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
7 (?P<charset>[^?]*?) # non-greedy up to the next ? is the charset |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
8 \? # literal ? |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
9 (?P<encoding>[qb]) # either a "q" or a "b", case insensitive |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
10 \? # literal ? |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
11 (?P<encoded>.*?) # non-greedy up to the next ?= is the encoded string |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
12 \?= # literal ?= |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
13 ''', re.VERBOSE | re.IGNORECASE) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
14 |
|
1628
ea1afeb64b45
more pedantic rfc2822 header qp encoding
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
1439
diff
changeset
|
15 hqre = re.compile(r'^[A-z0-9!"#$%%&\'()*+,-./:;<=>?@\[\]^_`{|}~ ]+$') |
|
1383
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
16 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
17 def base64_decode(s, convert_eols=None): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
18 """Decode a raw base64 string. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
19 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
20 If convert_eols is set to a string value, all canonical email linefeeds, |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
21 e.g. "\\r\\n", in the decoded text will be converted to the value of |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
22 convert_eols. os.linesep is a good choice for convert_eols if you are |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
23 decoding a text attachment. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
25 This function does not parse a full MIME header value encoded with |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
26 base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
27 level email.Header class for that functionality. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
28 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
29 Taken from 'email' module |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
30 """ |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
31 if not s: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
32 return s |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
33 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
34 dec = a2b_base64(s) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
35 if convert_eols: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
36 return dec.replace(CRLF, convert_eols) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
37 return dec |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
38 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
39 def unquote_match(match): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
40 """Turn a match in the form =AB to the ASCII character with value 0xab |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
41 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
42 Taken from 'email' module |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
43 """ |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
44 s = match.group(0) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
45 return chr(int(s[1:3], 16)) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
46 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
47 def qp_decode(s): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
48 """Decode a string encoded with RFC 2045 MIME header `Q' encoding. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
49 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
50 This function does not parse a full MIME header value encoded with |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
51 quoted-printable (like =?iso-8895-1?q?Hello_World?=) -- please use |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
52 the high level email.Header class for that functionality. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
53 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
54 Taken from 'email' module |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
55 """ |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
56 s = s.replace('_', ' ') |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
57 return re.sub(r'=\w{2}', unquote_match, s) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
58 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
59 def _decode_header(header): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
60 """Decode a message header value without converting charset. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
61 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
62 Returns a list of (decoded_string, charset) pairs containing each of the |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
63 decoded parts of the header. Charset is None for non-encoded parts of the |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
64 header, otherwise a lower-case string containing the name of the character |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
65 set specified in the encoded string. |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
66 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
67 Taken from 'email' module |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
68 """ |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
69 # If no encoding, just return the header |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
70 header = str(header) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
71 if not ecre.search(header): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
72 return [(header, None)] |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
73 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
74 decoded = [] |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
75 dec = '' |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
76 for line in header.splitlines(): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
77 # This line might not have an encoding in it |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
78 if not ecre.search(line): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
79 decoded.append((line, None)) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
80 continue |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
81 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
82 parts = ecre.split(line) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
83 while parts: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
84 unenc = parts.pop(0) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
85 if unenc: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
86 if unenc.strip(): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
87 decoded.append((unenc, None)) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
88 if parts: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
89 charset, encoding = [s.lower() for s in parts[0:2]] |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
90 encoded = parts[2] |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
91 dec = '' |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
92 if encoding == 'q': |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
93 dec = qp_decode(encoded) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
94 elif encoding == 'b': |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
95 dec = base64_decode(encoded) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
96 else: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
97 dec = encoded |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
98 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
99 if decoded and decoded[-1][1] == charset: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
100 decoded[-1] = (decoded[-1][0] + dec, decoded[-1][1]) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
101 else: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
102 decoded.append((dec, charset)) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
103 del parts[0:3] |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
104 return decoded |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
105 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
106 def decode_header(hdr): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
107 """ Decodes rfc2822 encoded header and return utf-8 encoded string |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
108 """ |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
109 if not hdr: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
110 return None |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
111 outs = u"" |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
112 for section in _decode_header(hdr): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
113 charset = unaliasCharset(section[1]) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
114 outs += unicode(section[0], charset or 'iso-8859-1', 'replace') |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
115 return outs.encode('utf-8') |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
116 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
117 def encode_header(header): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
118 """ Will encode in quoted-printable encoding only if header |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
119 contains non latin characters |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
120 """ |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
121 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
122 # Return empty headers unchanged |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
123 if not header: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
124 return header |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
125 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
126 # return plain header if it is not contains non-ascii characters |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
127 if hqre.match(header): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
128 return header |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
129 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
130 charset = 'utf-8' |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
131 quoted = '' |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
132 #max_encoded = 76 - len(charset) - 7 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
133 for c in header: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
134 # Space may be represented as _ instead of =20 for readability |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
135 if c == ' ': |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
136 quoted += '_' |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
137 # These characters can be included verbatim |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
138 elif hqre.match(c): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
139 quoted += c |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
140 # Otherwise, replace with hex value like =E2 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
141 else: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
142 quoted += "=%02X" % ord(c) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
143 plain = 0 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
144 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
145 return '=?%s?q?%s?=' % (charset, quoted) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
146 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
147 def unaliasCharset(charset): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
148 if charset: |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
149 return charset.lower().replace("windows-", 'cp') |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
150 #return charset_table.get(charset.lower(), charset) |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
151 return None |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
152 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
153 def test(): |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
154 print encode_header("Contrary, Mary") |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
155 #print unaliasCharset('Windows-1251') |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
156 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
157 if __name__ == '__main__': |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
158 test() |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
159 |
|
f19dde90e473
applied unicode patch
Andrey Lebedev <kedder@users.sourceforge.net>
parents:
diff
changeset
|
160 # vim: et |
