Nodemailer无效login:451 4.7.0临时服务器错误

我正尝试使用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 

在创build访问令牌的同时,我还给出了“ 以用户身份发送邮件 ”权限。

我错过了什么吗? 请提出解决scheme。

根据代码,似乎你正在混合SMTPauthentication与Oauth2。

经过一番研究,Office 365不支持这个(请参阅此主题 )。 要使用SMTP,您需要提供用户名/密码来连接服务器。 你可以参考这个线程的详细代码示例来连接Office 365的SMTP服务器。

如果你想通过Oauthauthentication检索邮件,你可以参考这个博客 。 作者(Jason Johnston [MSFT])也在他的GitHub上提供了完整的代码示例。