我编写了一个小型 Python 守护程序,它从本地网络接收邮件并通过外部邮件提供商发送邮件。问题是,一旦建立连接,我可以发送一封电子邮件,但不能再发送一次。以下代码显示了问题:
我像这样连接服务器:
>>> from smtplib import SMTP
>>> smtp = SMTP()
>>> smtp.connect('mail.gmx.net', 587)
(220, b'gmx.com (mrgmx003) Nemesis ESMTP Service ready')
>>> smtp.login('XXX', 'XXX')
(235, b'Authentication succeeded')
>>> smtp.sendmail('XXX', 'XXX', '')
{}
>>> smtp.quit()
(221, b'gmx.com Service closing transmission channel')
一切正常,电子邮件已发送。但如果我稍后再做同样的事情,我会收到错误“503 Bad sequence of commands”。连接仍然有效:
>>> smtp.connect('mail.gmx.net', 587)
(220, b'gmx.com (mrgmx003) Nemesis ESMTP Service ready')
但这都不起作用:
>>> smtp.login('XXX', 'XXX')
(503, b'Bad sequence of commands')
也不是这个:
>>> smtp.sendmail('XXX', 'XXX', '')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.2/smtplib.py", line 749, in sendmail
raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (503, b'Bad sequence of commands', 'XXX')
那么,这里有什么问题?如果我再次执行整个操作,从“smtp = SMTP()”开始,一切都会恢复正常。“smtp.quit()”不应该重置连接吗?
感谢大家的帮助!