背景:因為微軟禁用 用戶名密碼發(fā)送郵件,所以之前通過用戶名密碼發(fā)送郵件的功能 需要升級。
調(diào)研:調(diào)研發(fā)現(xiàn),使用graph的接口實現(xiàn)起來更自然,只需要實現(xiàn)兩個接口即可
實現(xiàn)流程:
1.調(diào)用 獲取token的接口:
1.1.請求地址:https://login.microsoftonline.com/注冊的Azure賬戶的域/oauth2/v2.0/token
1.2.請求方式:POST
1.3. Body:
grant_type 傳入固定值:client_credentials
client_id 傳入注冊的企業(yè)應(yīng)用程序的“應(yīng)用程序ID”
scope 傳入固定值:https://graph.microsoft.com/.default
client_secret 傳入 新建企業(yè)應(yīng)用程序后 可以一次性獲取到的 登錄秘鑰【這里也可以使用證書】

2. 利用獲取的token,可以用任何 上面這個應(yīng)用下面的任意用戶的郵箱發(fā)送郵件
2.1.請求地址:https://graph.microsoft.com/v1.0/users/郵件發(fā)送人的郵箱 or Azure用戶的id/sendmail
2.2.請求方式:POST
2.3.HEADER:
Authorization :接口1獲取到的token
Content-Type:application/json
Host:graph.microsoft.com
2.4.Body:
{
??"message":?{
????"subject":?"郵件主題",
????"body":?{
??????"contentType":?"Text",
??????"content":?"這里是郵件內(nèi)容"
????},
????"toRecipients":?[
??????{
????????"emailAddress":?{
??????????"address":?"收件人郵箱"
????????}
??????}
????],
????"ccRecipients":?[
??????{
????????"emailAddress":?{
??????????"address":?"抄送郵箱"
????????}
??????}
????]
??},
??"saveToSentItems":?"true"
}
2.5. 注意:sendemail 接口調(diào)用成功了,返回的響應(yīng)碼不是200 而是201?

PS: 如果你的Azure賬戶 沒有購買,只是個測試用戶。那么郵件是發(fā)不出去的。
接口調(diào)用成功后,郵箱會收到報錯郵件:
Your message wasn't delivered because the recipient's email provider rejected it.
Remote Server returned '550 5.7.708 Service unavailable. Access denied, traffic not accepted from this IP. For more information please go to http://go.microsoft.com/fwlink/?LinkId=526653 AS(7230) [CH2PR14MB3959.namprd14.prod.outlook.com]'
