From: W. Trevor King Date: Sat, 18 Jul 2009 13:21:03 +0000 (-0400) Subject: Added "to_unicode" to send_pgp_mime.flatten() X-Git-Tag: 1.0.0~62^2~46^2~50 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=c1a84ab2e9fbdc28fde4ba377e65e9c8e53ee64f;p=be.git Added "to_unicode" to send_pgp_mime.flatten() be-handle-mail wants unicode output, since all it's internal processing is done with unicode. However, the flatten calls in send_pgp_mime work with the encoded binary string output, and execute(sendmail, stdin=flatten(msg, to_unicode=True)) fails with Exception: u while executing /usr/sbin/sendmail -t sendmail: fatal: wking(1001): No recipient addresses found in message header --- diff --git a/interfaces/email/interactive/be-handle-mail b/interfaces/email/interactive/be-handle-mail index 3129ef4..d8aafb2 100755 --- a/interfaces/email/interactive/be-handle-mail +++ b/interfaces/email/interactive/be-handle-mail @@ -62,7 +62,7 @@ class InvalidEmail (ValueError): def stderr_msg(self): err_text = [u"Invalid email (particular type unknown):\n", unicode(self), u"", - send_pgp_mime.flatten(self.msg)] + send_pgp_mime.flatten(self.msg, to_unicode=True)] return u"\n".join(err_text) class InvalidSubject (InvalidEmail): @@ -205,7 +205,9 @@ def compose_response(ret, out_text, err_text, info): if LOGFILE != None: LOGFILE.write("responding to %s: %s\n" % (info["author_addr"], info["command"])) - LOGFILE.write("\n%s\n\n" % send_pgp_mime.flatten(response_email.plain())) + LOGFILE.write("\n%s\n\n" + % send_pgp_mime.flatten(response_email.plain(), + to_unicode=True)) return response_email def open_logfile(logpath=None): @@ -263,7 +265,7 @@ def main(): sys.exit(1) response_email = compose_response(ret, out_text, err_text, info).plain() if options.output == True: - print send_pgp_mime.flatten(response_email) + print send_pgp_mime.flatten(response_email, to_unicode=True) else: send_pgp_mime.mail(response_email, send_pgp_mime.sendmail) close_logfile() diff --git a/interfaces/email/interactive/send_pgp_mime.py b/interfaces/email/interactive/send_pgp_mime.py index 38a2437..e0451c9 100644 --- a/interfaces/email/interactive/send_pgp_mime.py +++ b/interfaces/email/interactive/send_pgp_mime.py @@ -155,7 +155,7 @@ def replace(template, format_char, replacement_text): str = regexp.sub(replacement_text, str) return str -def flatten(msg): +def flatten(msg, to_unicode=False): """ Produce flat text output from an email Message instance. """ @@ -164,8 +164,10 @@ def flatten(msg): g = Generator(fp, mangle_from_=False) g.flatten(msg) text = fp.getvalue() - encoding = msg.get_content_charset() - return unicode(text, encoding=encoding) + if to_unicode == True: + encoding = msg.get_content_charset() + text = unicode(text, encoding=encoding) + return text def source_email(msg, return_realname=False): """