changeset: 98781:522b5cdffd42 parent: 98778:1ebf71557872 parent: 98780:b99b3ddd0ac4 user: Vinay Sajip date: Sat Oct 17 16:24:23 2015 +0100 files: Lib/logging/handlers.py Misc/NEWS description: Closes #25411: Merged fix from 3.5. diff -r 1ebf71557872 -r 522b5cdffd42 Lib/logging/handlers.py --- a/Lib/logging/handlers.py Sat Oct 17 13:59:41 2015 +0100 +++ b/Lib/logging/handlers.py Sat Oct 17 16:24:23 2015 +0100 @@ -974,24 +974,26 @@ """ try: import smtplib - from email.utils import formatdate + from email.message import EmailMessage + import email.utils + port = self.mailport if not port: port = smtplib.SMTP_PORT smtp = smtplib.SMTP(self.mailhost, port, timeout=self.timeout) - msg = self.format(record) - msg = "From: %s\r\nTo: %s\r\nSubject: %s\r\nDate: %s\r\n\r\n%s" % ( - self.fromaddr, - ",".join(self.toaddrs), - self.getSubject(record), - formatdate(), msg) + msg = EmailMessage() + msg['From'] = self.fromaddr + msg['To'] = ','.join(self.toaddrs) + msg['Subject'] = self.getSubject(record) + msg['Date'] = email.utils.localtime() + msg.set_content(self.format(record)) if self.username: if self.secure is not None: smtp.ehlo() smtp.starttls(*self.secure) smtp.ehlo() smtp.login(self.username, self.password) - smtp.sendmail(self.fromaddr, self.toaddrs, msg) + smtp.send_message(msg) smtp.quit() except Exception: self.handleError(record) diff -r 1ebf71557872 -r 522b5cdffd42 Lib/test/test_logging.py --- a/Lib/test/test_logging.py Sat Oct 17 13:59:41 2015 +0100 +++ b/Lib/test/test_logging.py Sat Oct 17 16:24:23 2015 +0100 @@ -930,7 +930,7 @@ timeout=self.TIMEOUT) self.assertEqual(h.toaddrs, ['you']) self.messages = [] - r = logging.makeLogRecord({'msg': 'Hello'}) + r = logging.makeLogRecord({'msg': 'Hello \u2713'}) self.handled = threading.Event() h.handle(r) self.handled.wait(self.TIMEOUT) # 14314: don't wait forever @@ -941,7 +941,7 @@ self.assertEqual(mailfrom, 'me') self.assertEqual(rcpttos, ['you']) self.assertIn('\nSubject: Log\n', data) - self.assertTrue(data.endswith('\n\nHello')) + self.assertTrue(data.endswith('\n\nHello \u2713')) h.close() def process_message(self, *args): diff -r 1ebf71557872 -r 522b5cdffd42 Misc/NEWS --- a/Misc/NEWS Sat Oct 17 13:59:41 2015 +0100 +++ b/Misc/NEWS Sat Oct 17 16:24:23 2015 +0100 @@ -63,6 +63,9 @@ Library ------- +- Issue #25411: Improved Unicode support in SMTPHandler through better use of + the email package. Thanks to user simon04 for the patch. + - Move the imp module from a PendingDeprecationWarning to DeprecationWarning. - Issue #25407: Remove mentions of the formatter module being removed in