aboutsummaryrefslogtreecommitdiffstats
path: root/interfaces/email
diff options
context:
space:
mode:
Diffstat (limited to 'interfaces/email')
-rwxr-xr-xinterfaces/email/interactive/be-handle-mail15
1 files changed, 7 insertions, 8 deletions
diff --git a/interfaces/email/interactive/be-handle-mail b/interfaces/email/interactive/be-handle-mail
index 666ac18..bcb9519 100755
--- a/interfaces/email/interactive/be-handle-mail
+++ b/interfaces/email/interactive/be-handle-mail
@@ -47,7 +47,7 @@ executed, with the email's post-tag subject as the commit message.
"""
import codecs
-import cStringIO as StringIO
+import StringIO as StringIO
import email
from email.mime.multipart import MIMEMultipart
import email.utils
@@ -228,11 +228,8 @@ class Command (object):
self.normalize_args()
# set stdin and catch stdout and stderr
if self.stdin != None:
- new_stdin = StringIO.StringIO(self.stdin)
- orig___stdin = sys.__stdin__
- sys.__stdin__ = new_stdin
orig_stdin = sys.stdin
- sys.stdin = new_stdin
+ sys.stdin = StringIO.StringIO(self.stdin)
new_stdout = codecs.getwriter(ENCODING)(StringIO.StringIO())
new_stderr = codecs.getwriter(ENCODING)(StringIO.StringIO())
orig_stdout = sys.stdout
@@ -256,8 +253,6 @@ class Command (object):
"%s\n%s" % (type(e), unicode(e)))
# restore stdin, stdout, and stderr
if self.stdin != None:
- sys.__stdin__ = new_stdin
- sys.__stdin__ = orig___stdin
sys.stdin = orig_stdin
sys.stdout.flush()
sys.stderr.flush()
@@ -437,10 +432,14 @@ class Message (object):
Traverse the email message returning (body, mime_type) for
each non-mulitpart portion of the message.
"""
+ msg_charset = self.msg.get_content_charset(ENCODING).lower()
for part in self.msg.walk():
if part.is_multipart():
continue
- body,mime_type=(part.get_payload(decode=1),part.get_content_type())
+ body,mime_type=(part.get_payload(decode=True),part.get_content_type())
+ charset = part.get_content_charset(msg_charset).lower()
+ if mime_type.startswith("text/"):
+ body = unicode(body, charset) # convert text types to unicode
yield (body, mime_type)
def _parse_body_pseudoheaders(self, body, required, optional,
dictionary=None):