[英]No email sending using smtplib - python
import smtplib
sender = 'den.callanan@gmail.com'
receiver = ['callanden@gmail.com']
message = """From: From Person <den.callanan@gmail.com>
To: To Person <callanden@gmail.com>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try:
print("trying host and port...")
smtpObj = smtplib.SMTP('smtp.gmail.com', 465)
print("sending mail...")
smtpObj.sendmail(sender, receiver, message)
print("Succesfully sent email")
except SMTPException:
print("Error: unable to send email")
我已經在同一個服務器(gmail)上創建了兩個新的電子郵件帳戶(上述),以對其進行測試。 它到達打印“正在嘗試主機和端口...”的地步,並且不再進行任何操作。 所以問題應該出在我輸入的地址和端口號上。 但是根據gmail的傳出郵件服務器詳細信息,我已經正確輸入了它們。 任何想法有什么問題嗎?
如果我刪除端口號或嘗試使用其他端口號(例如587),則會出現錯誤。
通過Gmail的SMTP服務器發送電子郵件需要TLS和身份驗證。 要進行身份驗證,您需要為您的帳戶輸入應用專用密碼 。
這個腳本對我有用(盡管我使用了自己的GMail電子郵件地址和自己的應用程序專用密碼)。 在下面的代碼中,用您生成的密碼替換APPLICATION_SPECIFIC_PASSWORD。
import smtplib
sender = 'den.callanan@gmail.com'
receiver = ['callanden@gmail.com']
message = """From: From Person <den.callanan@gmail.com>
To: To Person <callanden@gmail.com>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try:
print("trying host and port...")
smtpObj = smtplib.SMTP_SSL('smtp.gmail.com', 465)
smtpObj.login("den.callanan@gmail.com", "APPLICATION_SPECIFIC_PASSWORD")
print("sending mail...")
smtpObj.sendmail(sender, receiver, message)
print("Succesfully sent email")
except smtplib.SMTPException:
print("Error: unable to send email")
import traceback
traceback.print_exc()
(為調試該問題,我在except語句中添加了print-traceback代碼。該異常包含有關如何使其工作的特定信息。該代碼在訪問端口465時掛起,我認為是因為TLS協商存在問題,所以我必須嘗試使用端口587;然后我獲得了很好的調試信息,該信息說明了如何操作。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.