我已经编写了一个小型Python守护进程,它接收来自本地,网络的邮件并通过外部邮件提供程序发送它。问题是,如果一旦建立连接,我可以发送一次电子邮件,但不能发送另一个电子邮件。下面的代码显示的问题:我连接的服务器,像这样在守护进程中多次使用Python的SMTP
:
>>> 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错误的命令序列”。该连接仍然有效:
>>> 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()”重置连接?
感谢您的帮助!
谢谢,它使代码实际上工作,而不必重新实例化SMTP。谢谢! –