| | |
| | |
| | |
| |
|
| | """Encodings and related functions.""" |
| |
|
| | __all__ = [ |
| | 'encode_7or8bit', |
| | 'encode_base64', |
| | 'encode_noop', |
| | 'encode_quopri', |
| | ] |
| |
|
| |
|
| | from base64 import encodebytes as _bencode |
| | from quopri import encodestring as _encodestring |
| |
|
| |
|
| | |
| | def _qencode(s): |
| | enc = _encodestring(s, quotetabs=True) |
| | |
| | return enc.replace(b' ', b'=20') |
| |
|
| |
|
| | def encode_base64(msg): |
| | """Encode the message's payload in Base64. |
| | |
| | Also, add an appropriate Content-Transfer-Encoding header. |
| | """ |
| | orig = msg.get_payload(decode=True) |
| | encdata = str(_bencode(orig), 'ascii') |
| | msg.set_payload(encdata) |
| | msg['Content-Transfer-Encoding'] = 'base64' |
| |
|
| |
|
| | |
| | def encode_quopri(msg): |
| | """Encode the message's payload in quoted-printable. |
| | |
| | Also, add an appropriate Content-Transfer-Encoding header. |
| | """ |
| | orig = msg.get_payload(decode=True) |
| | encdata = _qencode(orig) |
| | msg.set_payload(encdata) |
| | msg['Content-Transfer-Encoding'] = 'quoted-printable' |
| |
|
| |
|
| | |
| | def encode_7or8bit(msg): |
| | """Set the Content-Transfer-Encoding header to 7bit or 8bit.""" |
| | orig = msg.get_payload(decode=True) |
| | if orig is None: |
| | |
| | msg['Content-Transfer-Encoding'] = '7bit' |
| | return |
| | |
| | |
| | try: |
| | orig.decode('ascii') |
| | except UnicodeError: |
| | msg['Content-Transfer-Encoding'] = '8bit' |
| | else: |
| | msg['Content-Transfer-Encoding'] = '7bit' |
| |
|
| |
|
| | |
| | def encode_noop(msg): |
| | """Do nothing.""" |
| |
|