[tor-commits] [bridgedb/develop] Use `email.message.Message` instead of `MimeWriter.MimeWriter`
isis at torproject.org
isis at torproject.org
Tue Apr 1 22:16:43 UTC 2014
commit 5092364f7e3ce42b61b0336a95519639d0e59308
Author: Matthew Finkel <Matthew.Finkel at gmail.com>
Date: Sun Mar 30 12:42:06 2014 +0000
Use `email.message.Message` instead of `MimeWriter.MimeWriter`
`MimeWriter.MimeWriter` was deprecated in Python 2.3, now is a great
time for us to switch to the replacement.
Fixes #11370
---
CHANGELOG | 4 ++++
lib/bridgedb/EmailServer.py | 39 ++++++++++++++++++++++-----------------
2 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 4f36267..7f160df 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,10 @@ Changes in version 0.1.7 -
descriptor reparsing into another thread and
significantly increased the availability of bridgedb,
as a result.
+ * FIXES #11370 We were using an old (and deprecated) module when
+ we created our email responses. Now we use the newer
+ version. This should only affect internal functionality
+ and should not result in any noticable user-visible changes.
And includes the following general changes:
* BUMPS leekspin version to 0.1.3
diff --git a/lib/bridgedb/EmailServer.py b/lib/bridgedb/EmailServer.py
index 8b7783f..90b22af 100644
--- a/lib/bridgedb/EmailServer.py
+++ b/lib/bridgedb/EmailServer.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 ; test-case-name: bridgedb.test.test_EmailServer -*-
# BridgeDB by Nick Mathewson.
# Copyright (c) 2007-2013, The Tor Project, Inc.
# See LICENSE for licensing information
@@ -6,8 +7,10 @@
This module implements the email interface to the bridge database.
"""
-from StringIO import StringIO
-import MimeWriter
+from __future__ import unicode_literals
+
+from email import message
+from io import StringIO
import gettext
import gpgme
import logging
@@ -430,17 +433,19 @@ def addSMTPServer(cfg, dist, sched):
def composeEmail(fromAddr, clientAddr, subject, body, msgID=False,
gpgContext=None):
- f = StringIO()
- w = MimeWriter.MimeWriter(f)
- w.addheader("From", fromAddr)
- w.addheader("To", clientAddr)
- w.addheader("Message-ID", twisted.mail.smtp.messageid())
+ msg = message.Message()
+ msg.add_header("From", fromAddr)
+ msg.add_header("To", clientAddr)
+ msg.add_header("Message-ID", twisted.mail.smtp.messageid())
if not subject.startswith("Re:"): subject = "Re: %s"%subject
- w.addheader("Subject", subject)
+ msg.add_header("Subject", subject)
if msgID:
- w.addheader("In-Reply-To", msgID)
- w.addheader("Date", twisted.mail.smtp.rfc822date())
- mailbody = w.startbody("text/plain")
+ msg.add_header("In-Reply-To", msgID)
+ msg.add_header("Date", twisted.mail.smtp.rfc822date())
+ msg.set_default_type("text/plain")
+ headers = [': '.join(m) for m in msg.items()]
+ mail = StringIO("\r\n".join(headers))
+ mail.writelines(unicode(msg.as_string()))
# gpg-clearsign messages
if gpgContext:
@@ -450,20 +455,20 @@ def composeEmail(fromAddr, clientAddr, subject, body, msgID=False,
if (len(sigs) != 1):
logging.warn('Failed to sign message!')
signature.seek(0)
- [mailbody.write(l) for l in signature]
+ [mail.write(l) for l in signature]
else:
- mailbody.write(body)
+ mail.write(body)
# Only log the email text (including all headers) if SAFE_LOGGING is
# disabled:
if not Util.safe_logging:
- f.seek(0)
- logging.debug("Email contents:\n%s" % f.read())
+ mail.seek(0)
+ logging.debug("Email contents:\n%s" % mail.read())
else:
logging.debug("Email text for %r created." % Util.logSafely(clientAddr))
- f.seek(0)
+ mail.seek(0)
- return clientAddr, f
+ return clientAddr, mail
def getGPGContext(cfg):
"""Import a key from a file and initialise a context for GnuPG operations.
More information about the tor-commits
mailing list