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

2. 利用獲取的token,可以用任何 上面這個(gè)應(yīng)用下面的任意用戶的郵箱發(fā)送郵件
2.1.請(qǐng)求地址:https://graph.microsoft.com/v1.0/users/郵件發(fā)送人的郵箱 or Azure用戶的id/sendmail
2.2.請(qǐng)求方式: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賬戶 沒有購(gòu)買,只是個(gè)測(cè)試用戶。那么郵件是發(fā)不出去的。
接口調(diào)用成功后,郵箱會(huì)收到報(bào)錯(cuò)郵件:
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]'
