diff options
author | Barry Warsaw <barry@python.org> | 2001-09-23 03:17:28 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2001-09-23 03:17:28 (GMT) |
commit | ba92580f01b47ba1468c382961ed5122654c2520 (patch) | |
tree | 413464c274da1a93dc99d0a1cf13baf9a99c3220 /Lib/email/Encoders.py | |
parent | d61d0d3f6dbd960a761c05ff7fea848cb6490aa3 (diff) | |
download | cpython-ba92580f01b47ba1468c382961ed5122654c2520.zip cpython-ba92580f01b47ba1468c382961ed5122654c2520.tar.gz cpython-ba92580f01b47ba1468c382961ed5122654c2520.tar.bz2 |
The email package version 1.0, prototyped as mimelib
<http://sf.net/projects/mimelib>. There /are/ API differences between
mimelib and email, but most of the implementations are shared (except
where cool Py2.2 stuff like generators are used).
Diffstat (limited to 'Lib/email/Encoders.py')
-rw-r--r-- | Lib/email/Encoders.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Lib/email/Encoders.py b/Lib/email/Encoders.py new file mode 100644 index 0000000..36db370 --- /dev/null +++ b/Lib/email/Encoders.py @@ -0,0 +1,68 @@ +# Copyright (C) 2001 Python Software Foundation +# Author: barry@zope.com (Barry Warsaw) + +"""Module containing encoding functions for Image.Image and Text.Text. +""" + +import base64 +from quopri import encodestring as _encodestring + + + +# Helpers +def _qencode(s): + return _encodestring(s, quotetabs=1) + +def _bencode(s): + # We can't quite use base64.encodestring() since it tacks on a "courtesy + # newline". Blech! + if not s: + return s + hasnewline = (s[-1] == '\n') + value = base64.encodestring(s) + if not hasnewline and value[-1] == '\n': + return value[:-1] + return value + + + +def encode_base64(msg): + """Encode the message's payload in Base64. + + Also, add an appropriate Content-Transfer-Encoding: header. + """ + orig = msg.get_payload() + encdata = _bencode(orig) + 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() + 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() + # We play a trick to make this go fast. If encoding to ASCII succeeds, we + # know the data must be 7bit, otherwise treat it as 8bit. + try: + orig.encode('ascii') + except UnicodeError: + msg['Content-Transfer-Encoding'] = '8bit' + else: + msg['Content-Transfer-Encoding'] = '7bit' + + + +def encode_noop(msg): + """Do nothing.""" |