节点邮件程序登录无效: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

在创建访问令牌时,我还授予了">以用户身份发送邮件"权限。

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

根据代码,您似乎将SMTP身份验证与Oauth2混合在一起。

经过一些研究,Office 365 不支持此功能(请参阅此线程(。要使用 SMTP,您需要提供用户名/密码来连接服务器。您可以参考此线程以获取详细的代码示例,以连接 Office 365 的 SMTP 服务器。

如果您想通过 Oauth 身份验证检索邮件,您可以参考此博客。作者(Jason Johnston [MSFT](也在他的GitHub上提供了完整的代码示例。

我遇到了相同的 4.7.0 临时服务器错误问题,这不是由于与上面的 OP 或 DNS 相同的问题(因为我发现这可能是其他搜索中的问题,如果您有多个 DNS 设置(,但时间偏差超过 10 分钟!

我的邮件服务器在 VM 上运行,因此发现主机时间实际上已关闭。 修复了主机和邮件服务器,这为我解决了问题。

自从我找到这篇文章以来,在这里发布这个,我将来可能会帮助其他人。

相关内容

最新更新