[英]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 應該用於從連接開始就需要 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.