簡體   English   中英

使用帶有 365 電子郵件地址的 SMTPLIB SSL 電子郵件時出錯

[英]Errors when using SMTPLIB SSL email with a 365 email address

context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.office365.com", 587, context=context) as server:

(587) 當我運行它時,我收到一個 SSL 錯誤:[SSL: WRONG_VERSION_NUMBER] 錯誤的版本號 (_ssl.c:1056)。

(465) 我收到超時錯誤。

我嘗試使用端口 465 和 587。當我使用不同的端口時出現不同的錯誤。 我確實嘗試了 995 只是為了它,但仍然沒有運氣。 如果我使用我的 gmail 帳戶,則沒有問題。

我需要對我的電子郵件帳戶做些什么才能讓它工作。 我也試過 .SMTP() ,但仍然沒有運氣。

smtp = smtplib.SMTP("smtp.office365.com",587)
context = ssl.create_default_context()
with smtp.starttls(context=context) as server:
    server.login(from_address, password)

    for i, r in newhire[mask].iterrows():     
            server.sendmail(
                from_address,
                r["Email"],
                message.format(Employee=r["Employee Name"],
                   StartDate=r["StartDate"],
                               PC=r["PC"],
                               Title=r["Title"],
                               Email=r["Email"], 


                )
            )

SMTP_SSL 的文檔中

SMTP_SSL 應該用於從連接開始就需要 SSL 並且不適合使用 starttls() 的情況。

因此,SMTP_SSL 用於隱式 SMTP,其公共端口是 465。端口 587 用於顯式 SMTP,其中完成簡單連接,然后使用 STARTTLS 命令升級到 SSL。

這里發生的情況是,客戶端嘗試與在此階段不期望 SSL/TLS 的服務器對話,因此使用非 TLS 數據進行回復。 盡管如此,這些仍然被解釋為 TLS,這導致了這個奇怪的[SSL: WRONG_VERSION_NUMBER]

要解決此問題,請使用帶有 SMTP_SSL(Office365 不支持)的端口 465(而不是 587)或使用端口 587 但帶有starttls

with smtplib.SMTP("smtp.office365.com", 587) as server:
     server.starttls(context=context)

暫無
暫無

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

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