[Nym3-commit] r482 - trunk/nymbaron

zax at conuropsis.org zax at conuropsis.org
Thu Mar 16 20:09:15 CET 2006


Author: zax
Date: 2006-03-16 20:09:13 +0100 (Thu, 16 Mar 2006)
New Revision: 482

Modified:
   trunk/nymbaron/Mail.py
Log:
Add SMTP exception handling


Modified: trunk/nymbaron/Mail.py
===================================================================
--- trunk/nymbaron/Mail.py	2006-03-16 17:26:11 UTC (rev 481)
+++ trunk/nymbaron/Mail.py	2006-03-16 19:09:13 UTC (rev 482)
@@ -249,9 +249,29 @@
     # Send the message to the designated smtp server
     # TODO Need some error handling when logging gets enabled
     mail_logger.debug("Sending outgoing message through smtplib")
-    mailserver = smtplib.SMTP(smtphost)
+    try:
+        mailserver = smtplib.SMTP(smtphost)
+        mail_logger.debug("Connected to SMTP server %s" % smtphost)
+    except socket.error:
+        mail_logger.warn("Server %s does not appear to be listening for SMTP connections" % smtphost)
+        sys.exit(2)
+    except socket.gaierror:
+        mail_logger.warn("Server %s is not responding" % smtphost)
+        sys.exit(2)
     #mailserver.set_debuglevel(1)
-    mailserver.sendmail(from_addr, [rcpt], payload)
+    try:
+        mailserver.sendmail(from_addr, [rcpt], payload)
+        mail_logger.debug("Message successfully relayed to SMTP server %s" % smtphost)
+    except smtplib.SMTPRecipientsRefused:
+        mail_logger.info("All recipients were refused for message from %s" % nym)
+    except smtplib.SMTPHeloError:
+        mail_logger.warn("The SMTP server %s did not respond properly to HELO" % smtphost)
+    except smtplib.SMTPSenderRefused:
+        mail_logger.info("The SMTP server %s refused sender %s" % (smtphost, from_hddr))
+    except smtplib.SMTPDataError:
+        mail_logger.warn("The SMTP server %s responded with an unexpected code" % smtphost)
+    except:
+        mail_logger.warn("An unexpected error occured in smtplib" % smtphost)
     mailserver.quit()
 
 def relay_sendmail(payload, sm):
@@ -265,6 +285,8 @@
     if status:
         mail_logger.warn("%s returned error %s" % (sm, status))
         sys.exit(2)
+    else:
+        mail_logger.debug("Message successfully relayed to %s" % sm)
 
 def genMid(length = midLen):
     """Randomly generates a mid of given length different from oldestMid"""



More information about the Nym3-commit mailing list