日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 office 365 SMTP 发送企业邮件

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 office 365 SMTP 发送企业邮件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

最近公司的企業郵箱從 gmail 遷移到了 office 365。不得不說,微軟 office 套件的功能在市場上還是無人可以取代的。公司自然需要用 office 365 向客戶發送郵件,因此需要重新配置項目的 SMTP 服務器。

一開始直接將 gamil 的 SMTP 服務器地址換成 office 365 的地址即“smtp.office365.com”,但是一直收到下面的錯誤提示,很容易想到是用戶名和密碼錯誤,在確認用戶名和密碼沒有問題之后錯誤仍然一直存在,在查閱資料(baidu,google,bing)之后,也一直沒找到合適的解決方案(基本都是在貼各種常規代碼),最終在和客服進行幾次交流之后找到了問題的所在。

Traceback (most recent call last):File "/Users/crown/Projects/hub/docs/email-try.py", line 49, in sendsmtp_obj.login('lilu.cao@orbitfin.ai',"xxx")File "/opt/miniconda3/envs/webtest/Lib/python3.7/smtplib.py", line 730, in Loginraise last_exceptionFile "/opt/miniconda3/envs/webtest/lib/python3.7/smtplib.py", line 721, in logininitial_response_ok=initial_response_ok)File "/opt/miniconda3/envs/webtest/lib/python3.7/smtplib.py", line 642, in authraise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'5.7.139 Authentication unsuccessful, the request did not meet the criteria to be authenticated successfully.

接下來通過配置下面三個步驟完成郵箱的 SMTP 郵件發送。

三步配置

正確的發送代碼(python)

這一步是最簡單的,網上有很多優秀的封裝的 email 發送類,我這里貼出一個之前用過的:

import emails from emails.template import JinjaTemplate as TUSERNAME = 'xxx' PASSWORD = 'xxx' smtp_conf = {'host': 'smtp.office365.com','user': USERNAME,'password': PASSWORD,'port': 587,'tls': True}def send_email():message = emails.html(subject=T('測試郵件'),html=T('<p>詳情見附件<br><br>'),mail_from=('auto-reporter', USERNAME))message.attach(data=open('readme.md', 'r'), filename="readme.txt")r = message.send(to=('Orangleliu', USERNAME), smtp=smtp_conf)print(r)def office365():import smtplibmailserver = smtplib.SMTP('smtp.office365.com', 587)mailserver.ehlo()mailserver.starttls()mailserver.login(USERNAME, PASSWORD)mailserver.sendmail(USERNAME, USERNAME, 'python email')mailserver.quit()if __name__ == "__main__":send_email()———————————————— 版權聲明:本文為CSDN博主「orangleliu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/orangleliu/article/details/84065548

需要注意的是,在使用 office 365 的 smtp 服務的時候,加密要用 tls 而不是 ssl,也就是:

mailserver.starttls()

在組織中啟用 SMTP AUTH

office 365 默認是對每一個用戶都不啟用 SMTP AUTH 的,因此我們需要對要使用 SMTP 進行發送郵件的用戶開啟 SMTP AUTH。一共有兩種開啟方式,一種是管理員登錄 admin 控制中心(https://admin.microsoft.com/)針對相應的用戶進行開啟。具體步驟如下:

1)登入 office 365 管理中心

通過 https://admin.microsoft.com/ 登入管理中心,然后根據下圖依次點擊找到對應用戶的 “Manage email apps”。

2)勾選 Authenticated SMTP

然后點擊 Manage email apps,在打開的側邊欄中將最后一項 “Authenticated SMTP” 勾選上。

第二種方式是通過 powershell 進行操作,這種方式在這里不做具體闡述,具體可以參考下面的官網鏈接。

[中文版本] https://docs.microsoft.com/zh-cn/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission

[英文版本] https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission

關閉安全性默認值

這一步至關重要,即便是我們開啟了 SMTP AUTH,如果沒有關閉安全默認值,那么郵件也無法使用。這一點其實已經在上面的“啟用或禁用通過身份驗證的客戶端 SMTP (SMTP AUTH) Exchange Online”文章中指出,只是我們很難注意到這個點。

關于什么是“安全默認值”,可以參考下面點文章。

https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults

下面是關閉“安全默認值”的步驟

1) 進入 Azure active directory

我們進入 admin 管理中心后,根據下圖,進入 Azure active directory。

2) 關閉安全默認值

在 Azure active directory 界面,通過下圖的指示,關閉安全默認值。

總結

完成上述三個步驟,我們就可以成功的通過 python 使用 office 365 的 SMTP 進行郵件發送。尤其是最有一步,對于默認安全值的問題,如果沒有咨詢微軟的客服,很難排查出發送失敗的原因。

參考文檔

[1] Python 使用office365郵箱自動發送郵件 https://blog.csdn.net/orangleliu/article/details/84065548?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-84065548.pc_agg_new_rank&utm_term=Python+%E4%BD%BF%E7%94%A8office365%E9%82%AE%E7%AE%B1%E8%87%AA%E5%8A%A8%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6&spm=1000.2123.3001.4430

[2] python3使用smtplib發送郵件,帶xlsx附件 https://www.cnblogs.com/xiao987334176/p/11975248.html

[3] 啟用或禁用通過身份驗證的客戶端 SMTP (SMTP AUTH) Exchange Online https://docs.microsoft.com/zh-cn/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission

[4] Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online https://docs.microsoft.com/en-us/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission

[5] Security defaults in Azure AD https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults

總結

以上是生活随笔為你收集整理的使用 office 365 SMTP 发送企业邮件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。