Handle multiple recipients. For CBV or auto whitelist of multiple emails.
This commit is contained in:
+15
-2
@@ -5,6 +5,9 @@
|
|||||||
# Send DSNs, do call back verification,
|
# Send DSNs, do call back verification,
|
||||||
# and generate DSN messages from a template
|
# and generate DSN messages from a template
|
||||||
# $Log$
|
# $Log$
|
||||||
|
# Revision 1.19 2009/07/02 19:41:12 customdesigned
|
||||||
|
# Handle @ in localpart.
|
||||||
|
#
|
||||||
# Revision 1.18 2009/06/10 18:01:59 customdesigned
|
# Revision 1.18 2009/06/10 18:01:59 customdesigned
|
||||||
# Doxygen updates
|
# Doxygen updates
|
||||||
#
|
#
|
||||||
@@ -116,13 +119,23 @@ def send_dsn(mailfrom,receiver,msg=None,timeout=600,session=None,ourfrom=''):
|
|||||||
code,resp = smtp.docmd('MAIL FROM: <%s>'%ourfrom)
|
code,resp = smtp.docmd('MAIL FROM: <%s>'%ourfrom)
|
||||||
if code != 250:
|
if code != 250:
|
||||||
raise smtplib.SMTPSenderRefused(code, resp, '<%s>'%ourfrom)
|
raise smtplib.SMTPSenderRefused(code, resp, '<%s>'%ourfrom)
|
||||||
|
if isinstance(mailfrom,basestring):
|
||||||
|
mailfrom = [mailfrom]
|
||||||
|
badrcpts = {}
|
||||||
|
for rcpt in mailfrom:
|
||||||
code,resp = smtp.rcpt(mailfrom)
|
code,resp = smtp.rcpt(mailfrom)
|
||||||
if code not in (250,251):
|
if code not in (250,251):
|
||||||
return (code,resp) # permanent error
|
badrcpts[rcpt] = (code,resp)# permanent error
|
||||||
smtp.quit()
|
smtp.quit()
|
||||||
|
if len(badrcpts) == 1:
|
||||||
|
return badrcpts.values()[0] # permanent error
|
||||||
|
if badrcpts:
|
||||||
|
return badrcpts
|
||||||
return None # success
|
return None # success
|
||||||
except smtplib.SMTPRecipientsRefused,x:
|
except smtplib.SMTPRecipientsRefused,x:
|
||||||
return x.recipients[mailfrom] # permanent error
|
if len(x.recipients) == 1:
|
||||||
|
return x.recipients.values()[0] # permanent error
|
||||||
|
return x.recipients
|
||||||
except smtplib.SMTPSenderRefused,x:
|
except smtplib.SMTPSenderRefused,x:
|
||||||
return x.args[:2] # does not accept DSN
|
return x.args[:2] # does not accept DSN
|
||||||
except smtplib.SMTPDataError,x:
|
except smtplib.SMTPDataError,x:
|
||||||
|
|||||||
Reference in New Issue
Block a user