背景:因为微软禁用 用户名密码发送邮件,所以之前通过用户名密码发送邮件的功能 需要升级。
调研:调研发现,使用graph的接口实现起来更自然,只需要实现两个接口即可
实现流程:
1.调用 获取token的接口:
1.1.请求地址:https://login.microsoftonline.com/注册的Azure账户的域/oauth2/v2.0/token
1.2.请求方式:POST
1.3. Body:
grant_type 传入固定值:client_credentials
client_id 传入注册的企业应用程序的“应用程序ID”
scope 传入固定值:https://graph.microsoft.com/.default
client_secret 传入 新建企业应用程序后 可以一次性获取到的 登录秘钥【这里也可以使用证书】
2. 利用获取的token,可以用任何 上面这个应用下面的任意用户的邮箱发送邮件
2.1.请求地址:https://graph.microsoft.com/v1.0/users/邮件发送人的邮箱 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": "这里是邮件内容"
},
"toRecipients": [
{
"emailAddress": {
"address": "收件人邮箱"
}
}
],
"ccRecipients": [
{
"emailAddress": {
"address": "抄送邮箱"
}
}
]
},
"saveToSentItems": "true"
}
2.5. 注意:sendemail 接口调用成功了,返回的响应码不是200 而是201
PS: 如果你的Azure账户 没有购买,只是个测试用户。那么邮件是发不出去的。
接口调用成功后,邮箱会收到报错邮件:
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]'