summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 6c89446)
raw | patch | inline | side by side (parent: 6c89446)
author | jlgijsbers <jlgijsbers@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Sat, 4 Oct 2003 11:21:47 +0000 (11:21 +0000) | ||
committer | jlgijsbers <jlgijsbers@57a73879-2fb5-44c3-a270-3262357dd7e2> | |
Sat, 4 Oct 2003 11:21:47 +0000 (11:21 +0000) |
git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1897 57a73879-2fb5-44c3-a270-3262357dd7e2
roundup/cgi/client.py | patch | blob | history | |
roundup/mailer.py | patch | blob | history | |
roundup/mailgw.py | patch | blob | history | |
roundup/roundupdb.py | patch | blob | history |
diff --git a/roundup/cgi/client.py b/roundup/cgi/client.py
index 575344cfba9f891ea82033a895e9943b2a3075c4..d4499bb334839aef8aa2abe05e2a15eebff01ca7 100644 (file)
--- a/roundup/cgi/client.py
+++ b/roundup/cgi/client.py
-# $Id: client.py,v 1.140 2003-09-24 14:53:58 jlgijsbers Exp $
+# $Id: client.py,v 1.141 2003-10-04 11:21:47 jlgijsbers Exp $
__doc__ = """
WWW request handler (also used in the stand-alone server).
%(url)s?@action=confrego&otk=%(otk)s
""" % {'name': props['username'], 'tracker': tracker_name, 'url': self.base,
'otk': otk, 'tracker_email': tracker_email}
- if not self.standard_message(props['address'], subject, body,
+ if not self.standard_message([props['address']], subject, body,
tracker_email):
return
Your password is now: %(password)s
'''%{'name': name, 'password': newpw}
- if not self.standard_message(address, subject, body):
+ if not self.standard_message([address], subject, body):
return
self.ok_message.append('Password reset and email sent to %s'%address)
You should then receive another email with the new password.
'''%{'name': name, 'tracker': tracker_name, 'url': self.base, 'otk': otk}
- if not self.standard_message(address, subject, body):
+ if not self.standard_message([address], subject, body):
return
self.ok_message.append('Email sent to %s'%address)
diff --git a/roundup/mailer.py b/roundup/mailer.py
index 002861856fe9af4a6dc72c91ac7946e2ae6518ac..6d9e6c8d63438210e5d15aa16c7a67e3c761f4b2 100644 (file)
--- a/roundup/mailer.py
+++ b/roundup/mailer.py
"""Sending Roundup-specific mail over SMTP."""
-# $Id: mailer.py,v 1.2 2003-09-08 21:08:59 jlgijsbers Exp $
+# $Id: mailer.py,v 1.3 2003-10-04 11:21:47 jlgijsbers Exp $
import time, quopri, os, socket, smtplib, re
message = StringIO()
writer = MimeWriter(message)
writer.addheader('Subject', encode_header(subject))
- writer.addheader('To', to)
+ writer.addheader('To', ', '.join(to))
writer.addheader('From', author)
writer.addheader('Date', time.strftime("%a, %d %b %Y %H:%M:%S +0000",
time.gmtime()))
return message, writer
def standard_message(self, to, subject, content, author=None):
+ """Send a standard message.
+
+ Arguments:
+ - 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.
+ """
message, writer = self.get_standard_message(to, subject, author)
writer.addheader('Content-Transfer-Encoding', 'quoted-printable')
def bounce_message(self, bounced_message, to, error,
subject='Failed issue tracker submission'):
- message, writer = self.get_standard_message(', '.join(to), subject)
+ """Bounce a message, attaching the failed submission.
+
+ Arguments:
+ - bounced_message: an RFC822 Message object.
+ - to: a list of addresses usable by rfc822.parseaddr().
+ - error: the reason of failure as a string.
+ - subject: the subject as a string.
+
+ """
+ message, writer = self.get_standard_message(to, subject)
part = writer.startmultipartbody('mixed')
part = writer.nextpart()
self.smtp_send(to, message)
def smtp_send(self, to, message):
+ """Send a message over SMTP, using roundup's config.
+
+ Arguments:
+ - to: a list of addresses usable by rfc822.parseaddr().
+ - message: a StringIO instance with a full message.
+ """
if self.debug:
# don't send - just write to a file
open(self.debug, 'a').write('FROM: %s\nTO: %s\n%s\n' %
# send the message as admin so bounces are sent there
# instead of to roundup
smtp = SMTPConnection(self.config)
- smtp.sendmail(self.config.ADMIN_EMAIL, [to],
+ smtp.sendmail(self.config.ADMIN_EMAIL, to,
message.getvalue())
except socket.error, value:
raise MessageSendError("Error: couldn't send email: "
diff --git a/roundup/mailgw.py b/roundup/mailgw.py
index 23e294315d474aeb23fd3760766311606f6f813c..8ec27fe983d0e0689a8dc9c233bfbff7369cd855 100644 (file)
--- a/roundup/mailgw.py
+++ b/roundup/mailgw.py
an exception, the original message is bounced back to the sender with the
explanatory message given in the exception.
-$Id: mailgw.py,v 1.132 2003-09-08 21:27:16 jlgijsbers Exp $
+$Id: mailgw.py,v 1.133 2003-10-04 11:21:47 jlgijsbers Exp $
"""
import string, re, os, mimetools, cStringIO, smtplib, socket, binascii, quopri
self.db.confirm_registration(otk.group('otk'))
subject = 'Your registration to %s is complete' % \
self.instance.config.TRACKER_NAME
- sendto = message.getaddrlist('from')[0][1]
+ sendto = [message.getheader('from')]
self.mailer.standard_message(sendto, subject, '')
return
elif hasattr(self.instance.config, 'MAIL_DEFAULT_CLASS') and \
diff --git a/roundup/roundupdb.py b/roundup/roundupdb.py
index 7edc5af292bae7f483ba842d7dc15fa83b1e0850..953b4190bc69ec5de0dc023bccb892f526b04edc 100644 (file)
--- a/roundup/roundupdb.py
+++ b/roundup/roundupdb.py
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
-# $Id: roundupdb.py,v 1.91 2003-09-16 16:12:38 kedder Exp $
+# $Id: roundupdb.py,v 1.92 2003-10-04 11:21:47 jlgijsbers Exp $
__doc__ = """
Extending hyperdb with types specific to issue-tracking.
# create the message
mailer = Mailer(self.db.config)
- message, writer = mailer.get_standard_message(', '.join(sendto),
- subject, author)
+ message, writer = mailer.get_standard_message(sendto, subject, author)
tracker_name = encode_header(self.db.config.TRACKER_NAME)
writer.addheader('Reply-To', straddr((tracker_name, from_address)))