X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=roundup%2Fmailer.py;h=93ef7f9ba5d26b3517014c86c42ec292f3a6bf3e;hb=c2760e668d93a49bcc08a62bc0ef8452986b8886;hp=ec5951ed87b12c8bd88289da049dbc51ce81cd7a;hpb=cff4a0ee0f4aaed78c316cf70e2a3263f3158f02;p=roundup.git diff --git a/roundup/mailer.py b/roundup/mailer.py index ec5951e..93ef7f9 100644 --- a/roundup/mailer.py +++ b/roundup/mailer.py @@ -1,7 +1,7 @@ """Sending Roundup-specific mail over SMTP. """ __docformat__ = 'restructuredtext' -# $Id: mailer.py,v 1.5 2004-02-11 23:55:08 richard Exp $ +# $Id: mailer.py,v 1.7 2004-02-29 00:35:55 richard Exp $ import time, quopri, os, socket, smtplib, re @@ -24,19 +24,41 @@ class Mailer: self.debug = os.environ.get('SENDMAILDEBUG', '') def get_standard_message(self, to, subject, author=None): + '''Form a standard email message from Roundup. + + "to" - recipients list + "subject" - Subject + "author" - (name, address) tuple or None for admin email + + Subject and author are encoded using the EMAIL_CHARSET from the + config (default UTF-8). + + Returns a Message object and body part writer. + ''' + # encode header values if they need to be + charset = getattr(self.config, 'EMAIL_CHARSET', 'utf-8') + tracker_name = self.config.TRACKER_NAME + if charset != 'utf-8': + tracker = unicode(tracker_name, 'utf-8').encode(charset) if not author: - author = straddr((self.config.TRACKER_NAME, - self.config.ADMIN_EMAIL)) + author = straddr((tracker_name, self.config.ADMIN_EMAIL)) + else: + name = author[0] + if charset != 'utf-8': + name = unicode(name, 'utf-8').encode(charset) + author = straddr((encode_header(name, charset), author[1])) + message = StringIO() writer = MimeWriter(message) - writer.addheader('Subject', encode_header(subject)) + writer.addheader('Subject', encode_header(subject, charset)) writer.addheader('To', ', '.join(to)) writer.addheader('From', author) writer.addheader('Date', time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())) # Add a unique Roundup header to help filtering - writer.addheader('X-Roundup-Name', self.config.TRACKER_NAME) + writer.addheader('X-Roundup-Name', encode_header(tracker_name, + charset)) # and another one to avoid loops writer.addheader('X-Roundup-Loop', 'hello') # finally, an aid to debugging problems @@ -53,7 +75,7 @@ class Mailer: - to: a list of addresses usable by rfc822.parseaddr(). - subject: the subject as a string. - content: the body of the message as a string. - - author: the sender as a string, suitable for a 'From:' header. + - author: the sender as a (name, address) tuple """ message, writer = self.get_standard_message(to, subject, author)