title: Python SMTP error code handling
body: <p>I've searched a fair bit on this and couldn't come up with anything satisfactory.</p>
  
  <p>I've been trying to write a python program to listen for email bounce reports and depending on the reason for the bounce resend them at different intervals.</p>
  
  <pre><code>import smtplib
  from smtplib import *
  
  sender = 'foo@bar.com'
  receivers = ['42@life.com']
  
  message = """From: From Arthur &lt;foo@bar.com&gt;
  To: To Deep Thought &lt;42@life.com&gt;
  Subject: SMTP e-mail test
  This is a test e-mail message.
  """
  
  try:
    smtpObj = smtplib.SMTP('smtp.gmail.com',587)
    smtpObj.starttls()
    smtpObj.login(sender,'foo@bar.com')
    smtpObj.sendmail(sender, receivers, message)
    print "Successfully sent email"
  except SMTPResponseException:
    error_code = SMTPResponseException.smtp_code
    error_message = SMTPResponseException.smtp_error
    print "Error code:"+error_code
    print "Message:"+error_message
    if (error_code==422):
      print "Recipient Mailbox Full"
    elif(error_code==431):
      print "Server out of space"
    elif(error_code==447):
      print "Timeout. Try reducing number of recipients"
    elif(error_code==510 or error_code==511):
      print "One of the addresses in your TO, CC or BBC line doesn't exist. Check again your recipients' accounts and correct any possible misspelling."
    elif(error_code==512):
      print "Check again all your recipients' addresses: there will likely be an error in a domain name (like mail@domain.coom instead of mail@domain.com)"
    elif(error_code==541 or error_code==554):
      print "Your message has been detected and labeled as spam. You must ask the recipient to whitelist you"
    elif(error_code==550):
      print "Though it can be returned also by the recipient's firewall (or when the incoming server is down), the great majority of errors 550 simply tell that the recipient email address doesn't exist. You should contact the recipient otherwise and get the right address."
    elif(error_code==553):
      print "Check all the addresses in the TO, CC and BCC field. There should be an error or a misspelling somewhere."
    else:
      print error_code+": "+error_message
  </code></pre>
  
  <p>To which I get the following error:</p>
  
  <blockquote>
    <p>Traceback (most recent call last):   File "C:/Users/Varun
    Shijo/PycharmProjects/EmailBounce/EmailBounceTest.py", line 20, in
    
        error_code = SMTPResponseException.smtp_code AttributeError: type object 'SMTPResponseException' has no attribute 'smtp_code'</p>
  </blockquote>
  
  <p>I read somewhere that I should be trying to get the attribute from an instance of the SMTPResponseException class (even though the smtplib documentation says otheriwse) so I tried that too, but I wasn't sure of what arguments to pass its constructor (code,msg).</p>
  
  <p>Could someone please nudge me in the right direction?</p>
  
  <p>Thanks.</p>