簡體   English   中英

沒有使用smtplib發送電子郵件-python

[英]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;然后我獲得了很好的調試信息,該信息說明了如何操作。)

您可以在此處查看有關SMTP_SSL對象的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM