email_send: feature to place mails in a maildir, instead of smtp

At some testing/development scenarios, we may not want to send the mails
away, just place them at a dir for inspection.

bzr revid: p_christ@hol.gr-20090723222937-8udu15ncqqxiq2ye
This commit is contained in:
P. Christeas
2009-07-24 01:29:37 +03:00
parent 5611c395c4
commit fdb3ee7772
+13 -1
View File
@@ -379,6 +379,18 @@ def email_send(email_from, email_to, subject, body, email_cc=None, email_bcc=Non
def write(self, s):
self.logger.notifyChannel('email_send', netsvc.LOG_DEBUG, s)
smtp_server = config['smtp_server']
if smtp_server.startswith('maildir:/'):
from mailbox import Maildir
maildir_path = smtp_server[8:]
try:
mdir = Maildir(maildir_path,factory=None, create = True)
mdir.add(msg.as_string(True))
return True
except Exception,e:
netsvc.Logger().notifyChannel('email_send (maildir)', netsvc.LOG_ERROR, e)
return False
try:
oldstderr = smtplib.stderr
s = smtplib.SMTP()
@@ -390,7 +402,7 @@ def email_send(email_from, email_to, subject, body, email_cc=None, email_bcc=Non
s.set_debuglevel(int(bool(debug))) # 0 or 1
s.connect(config['smtp_server'], config['smtp_port'])
s.connect(smtp_server, config['smtp_port'])
if ssl:
s.ehlo()
s.starttls()