Bug #292528 - Specify UTF-8 in the MIMEText constructor arguments, in order
authorZac Medico <zmedico@gentoo.org>
Wed, 11 Nov 2009 06:38:32 +0000 (06:38 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 11 Nov 2009 06:38:32 +0000 (06:38 -0000)
to avoid conversiont to ascii and subsequent UnicodeEncodeError when sending
mail. The idea comes from here: http://bugs.python.org/issue4403#msg76425.

svn path=/main/trunk/; revision=14806

pym/portage/mail.py

index 9a69f9604717daf9c95768e531ef49377aad862d..64774cdacbe3f8266e9c0b4d34d79503183e998d 100644 (file)
@@ -3,7 +3,7 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
-from email.mime.text import MIMEText as TextMessage
+from email.mime.text import MIMEText
 from email.mime.multipart import MIMEMultipart as MultipartMessage
 from email.mime.base import MIMEBase as BaseMessage
 from email.header import Header
@@ -21,6 +21,9 @@ import portage
 if sys.hexversion >= 0x3000000:
        basestring = str
 
+def TextMessage(_text):
+       return MIMEText(_text, _charset="UTF-8")
+
 def create_message(sender, recipient, subject, body, attachments=None):
 
        if sys.hexversion < 0x3000000:
@@ -127,9 +130,7 @@ def send_mail(mysettings, message):
                                myconn = smtplib.SMTP(mymailhost, mymailport)
                        if mymailuser != "" and mymailpasswd != "":
                                myconn.login(mymailuser, mymailpasswd)
-                       msg = _unicode_encode(message.as_string(),
-                               encoding=_encodings['content'], errors='backslashreplace')
-                       myconn.sendmail(myfrom, myrecipient, msg)
+                       myconn.sendmail(myfrom, myrecipient, message)
                        myconn.quit()
                except smtplib.SMTPException as e:
                        raise portage.exception.PortageException(_("!!! An error occured while trying to send logmail:\n")+str(e))