smtplib错误?第二次调用时,starttls / quit失败

时间:2012-12-25 01:32:10

标签: python python-2.7

拿这个代码

import smtplib
s = smtplib.SMTP()
s.set_debuglevel(1)

print "-------------------------------------------------------------------------"
s.connect("smtp.gmail.com",587)
s.starttls()
s.login("USERNAME","PASSWORD")
s.quit()

print "========================================================================="

s.connect("smtp.gmail.com",587)
s.starttls()
s.login("USERNAME","PASSWORD")
s.quit()
print "-------------------------------------------------------------------------"

第一次连接,它开始很好.... 第二次它产生了关于TLS的异常,如此处所示......

Traceback (most recent call last):
  File "mtest.py", line 12, in <module>
    s.starttls()
  File "/usr/lib/python2.7/smtplib.py", line 635, in starttls
    raise SMTPException("STARTTLS extension not supported by server.")
smtplib.SMTPException: STARTTLS extension not supported by server.

我错过了一些愚蠢的东西或者是否有错误?

P.S。我编写了这个测试,因为我在其他'thread'脚本中遇到了同样的问题,所以想确保它与线程无关。

1 个答案:

答案 0 :(得分:3)

我猜测s.quit()连接后s已经死了,不能用于其他任何事情。如果是这样,您需要另一个s = smtplib.SMTP()进行第二次邮件传输。

quit() documentation似乎表明情况如此:

  

终止SMTP会话并关闭连接。