我試圖用SMTP 3.2的SMTPlib.sendmail()函數 來發送郵件,經過一些修改後的SMTP庫(即 註釋掉了rset()函數,錯誤味精) 我設法從服務器檢索以下錯誤信息:用python發送郵件錯誤smtplib
Sendmail的失敗 (554,b'Transaction失敗:不能發送消息,由於可能被濫用,請訪問:http://postmaster.yahoo.com/abuse_smtp.html更多信息「)
雅虎郵件SMTP服務器認爲我發送垃圾郵件,URL鏈接到anythi ng 有用。我認爲這與頭部不足有關,我似乎無法找到關於什麼構成符合標頭的明確 答案。我已閱讀過Gmail的類似問題。 模擬郵件已被替換爲這篇文章。
任何幫助,將不勝感激
我的全代碼如下:
self.message = email.message_from_string('''To: <[email protected]>
From: <[email protected]>
Reply-To: <[email protected]>
Subject: Test send mail \n\n Hello''')
fromAddress = '[email protected]'
toAddress = '[email protected]'
try:
self.smtp = SMTP()
self.smtp.connect('smtp.mail.yahoo.com')
except Exception:
print('Connection Failed')
print(traceback.format_exc())
try:
self.smtp.login('rwilson','tree22')
except Exception:
print('Login Failed!')
print(traceback.format_exc())
try:
self.smtp.sendmail(fromAddress,toAddress ,self.message.as_string())
print("Message sucessfully sent!")
self.smtp.close()
except Exception as e:
print('SendMail Failed')
print(e)
我會建議使用普通的'telnet'會話調試問題:打開一個telnet連接到端口25 SMTP服務器,並嘗試通過手動輸入SMTP會話來發送郵件。如果這樣也行不通,您的問題與Python的SMTPlib沒有任何關係,您應該繼續嘗試弄清楚爲什麼SMTP服務器拒絕將您的郵件視爲垃圾郵件。如果確實有效,那麼代碼存在問題。使用像「tcpdump」和/或Wireshark這樣的數據包嗅探器,並將您的普通SMTP會話與python代碼導致的SMTP會話進行比較,以找出差異。 –
我已經放棄嘗試使用雅虎,上面的代碼似乎可以正常使用smtp.gmail.com –