我正在尝试使用oauth2
从office 365 Outlook帐户发送电子邮件但我收到了以下错误
Invalid login: 451 4.7.0 Temporary server error. Please try again later. PRX4 [MA1PR01CA0110.INDPRD01.PROD.OUTLOOK.COM]
这是我的代码
let sendEmail: (accessToken) => {
return new Promise((resolve, reject) => {
let options = {
"to": "xxx",
"subject": "hello from nodemailer",
"text": "Hello from nodemailer again"
"from": 'xxx'
}
let transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
secure: true,
auth: {
type: 'OAuth2',
user: options.from,
accessToken: accessToken
},
tls: { ciphers: 'SSLv3' }
})
transporter.sendMail(options, (err, info) => {
return err ? reject(err) : resolve(info);
})
})
}
还尝试使用端口:465 ,但收到错误
connect ETIMEDOUT 40.100.136.18:465
我在创建访问令牌时也提供了“以用户身份发送邮件”权限。
我错过了什么吗?请提出解决方案。
答案 0 :(得分:1)
根据代码,您似乎将SMTP身份验证与Oauth2混合使用。
经过一番研究,Office 365不支持此功能(请参阅this thread)。要使用SMTP,您需要提供用于连接服务器的用户名/密码。您可以参考this thread获取详细的代码示例,以连接Office365的SMTP服务器。
如果您想通过Oauth身份验证检索邮件,可以参考此blog。作者(Jason Johnston [MSFT])也在his's GitHub上提供了完整的代码示例。