diff options
author | W. Trevor King <wking@drexel.edu> | 2009-07-18 08:47:11 -0400 |
---|---|---|
committer | W. Trevor King <wking@drexel.edu> | 2009-07-18 08:47:11 -0400 |
commit | 906f1ecc5199e0c99d344bb0589958043609ca3f (patch) | |
tree | 683edcf8fda9d2ac23f83dffc553ecb98ba9a197 /interfaces | |
parent | 57222070fe85d19173f7bb4879b4b893bb8ae5da (diff) | |
download | bugseverywhere-906f1ecc5199e0c99d344bb0589958043609ca3f.tar.gz |
Added send_pgp_mime.Mail.encodedMIMEText() for unicode handling.
Now be-handle-mail handles examples/unicode without crashing
cat examples/unicode | ./be-handle-mail -o -l -
But the output email is encoded in base64:
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
From: BE Bugs <wking@thor.physics.drexel.edu>
To: John Doe <jdoe@example.com>
Date: Sat, 18 Jul 2009 12:22:05 +0000
Subject: [be-bug] Re: show
In-reply-to: <abcd@example.com>
UmVzdWx0cyBvZiBydW5uaW5nOiAoZXhpdCBjb2RlIDApCiAgc2hvdyAKCnN0ZG91dDoKCjw/eG1s
IHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pgo8YnVnPgogIDx1dWlkPmY3Y2NkOTE2
LWI1YzctNDg5MC1hMmUzLThjOGFjZTE3YWUzYTwvdXVpZD4KICA8c2hvcnQtbmFtZT5mN2M8L3No
b3J0LW5hbWU+CiAgPHNldmVyaXR5Pm1pbm9yPC9zZXZlcml0eT4KICA8c3RhdHVzPmZpeGVkPC9z
...
This is perhaps the best we can get out of python < 3.1/2.7, see
http://bugs.python.org/issue1368247
Diffstat (limited to 'interfaces')
-rwxr-xr-x | interfaces/email/interactive/be-handle-mail | 2 | ||||
-rw-r--r-- | interfaces/email/interactive/send_pgp_mime.py | 15 |
2 files changed, 12 insertions, 5 deletions
diff --git a/interfaces/email/interactive/be-handle-mail b/interfaces/email/interactive/be-handle-mail index 01b75ac..3129ef4 100755 --- a/interfaces/email/interactive/be-handle-mail +++ b/interfaces/email/interactive/be-handle-mail @@ -188,8 +188,6 @@ def compose_response(ret, out_text, err_text, info): response_header = [u"From: %s" % HANDLER_ADDRESS, u"To: %s" % info["author_addr"], u"Date: %s" % libbe.utility.time_to_str(time.time()), - u"Content-Type: text/plain; charset=%s" % ENCODING, - u"Content-Transfer-Encoding: 8bit", u"Subject: %s Re: %s"%(SUBJECT_COMMENT,info["command"]), ] if "message-id" in info: diff --git a/interfaces/email/interactive/send_pgp_mime.py b/interfaces/email/interactive/send_pgp_mime.py index a10674a..f66c626 100644 --- a/interfaces/email/interactive/send_pgp_mime.py +++ b/interfaces/email/interactive/send_pgp_mime.py @@ -80,6 +80,7 @@ have been warned. verboseInvoke = False PGP_SIGN_AS = None PASSPHRASE = None +DEFAULT_BODY_ENCODING = "UTF-8" # The following commands are adapted from my .mutt/pgp configuration # @@ -164,7 +165,8 @@ def flatten(msg): g = Generator(fp, mangle_from_=False) g.flatten(msg) text = fp.getvalue() - return text + encoding = msg.get_content_charset() + return unicode(text, encoding=encoding) def source_email(msg, return_realname=False): """ @@ -342,8 +344,15 @@ class Mail (object): return source_email(self.headermsg) def targetEmails(self): return target_emails(self.headermsg) + def encodedMIMEText(self, body, encoding=None): + if encoding == None: + encoding = DEFAULT_BODY_ENCODING + if type(body) == types.StringType: + encoding = "US-ASCII" + # Create the message ('plain' stands for Content-Type: text/plain) + return MIMEText(body.encode(encoding), 'plain', encoding) def clearBodyPart(self): - body = MIMEText(self.body) + body = self.encodedMIMEText(self.body) body.add_header('Content-Disposition', 'inline') return body def passphrase_arg(self, passphrase=None): @@ -356,7 +365,7 @@ class Mail (object): """ text/plain """ - msg = MIMEText(self.body) + msg = self.encodedMIMEText(self.body) for k,v in self.headermsg.items(): msg[k] = v return msg |