我已經編寫了一個小型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。謝謝! –