import smtplib
fromaddress = '[email protected]'
toaddress = [fromaddress]
message = """
From: %s
To: %s
Subject: test
Hello
Goodbye
""" % (fromaddress, toaddress)
server = smtplib.SMTP('mydomain.com')
server.set_debuglevel(1)
server.sendmail(fromaddress, toaddress, message)
此代碼打開一個套接字確定,但然後在發送失敗與'連接意外關閉'錯誤的sendmail。從查看smtplib source這發生在從smtp服務器返回空響應時。蟒蛇smtplib sendmail失敗
我從上面的代碼中錯過了什麼?我正在廉價的webhost上運行這個腳本作爲cgi腳本,作爲他們服務的一部分,他們安裝了sendmail和python服務。在他們的文檔中,他們有標準的「在php中發送電子郵件」的代碼示例,不需要認證,所以我假設python應該也是一樣。
任何人有任何見解?主機是hostgator,如果有幫助的話。
編輯:
底層誤差是SMTP服務器發出一個硬「由對等連接復位」復位即TCP。在什麼情況下電子郵件服務器會這樣做?
如果認爲是垃圾郵件它可能關閉連接。例如,如果發件人地址確實是「[email protected]」。或者你可能連接到錯誤的SMTP服務器。檢查HELO交換並確認你有合適的服務器。 「mydomain.com」是否解析爲指向hostgator的smtp服務器的A記錄?最後,嘗試使用telnet並手動運行SMTP協議。也許你會注意到一個有意義的錯誤信息。 – 2013-02-19 22:32:31
沒有telnet訪問:( – user1561108 2013-02-19 22:50:45
你不需要Telnet訪問你的服務器,你只需要任何類型的shell訪問。一旦你登錄你的服務器,*然後*你運行「telnet mydomain.com 25」。 – 2013-02-19 22:51:44