返回
Featured image of post Outlook邮箱的Smtp服务出现Oauth2认证失败错误

Outlook邮箱的Smtp服务出现Oauth2认证失败错误

在本博客的评论系统接入邮箱提醒时,用到了outlook的smtp服务,但是在使用时却发现了一个错误。

引言

在本博客的评论系统接入邮箱提醒时,用到了outlook的smtp服务,但是在使用时却发现没有邮件提醒。

查看日志

于是上vercel看了一下日志,如下图:

vercel部署的waline项目——发送邮件提醒报错
vercel部署的waline项目——发送邮件提醒报错

报错堆栈如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Mail send fail: Error: Invalid login: 535 5.7.139 Authentication unsuccessful, basic authentication is disabled. [CH0PR13CA0024.namprd13.prod.outlook.com 2024-11-15T12:41:27.364Z 08DD02E8CBA00082]
    at SMTPConnection._formatError (/var/task/node_modules/nodemailer/lib/smtp-connection/index.js:807:19)
    at SMTPConnection._actionAUTHComplete (/var/task/node_modules/nodemailer/lib/smtp-connection/index.js:1586:34)
    at SMTPConnection.<anonymous> (/var/task/node_modules/nodemailer/lib/smtp-connection/index.js:1540:18)
    at SMTPConnection._processResponse (/var/task/node_modules/nodemailer/lib/smtp-connection/index.js:991:20)
    at SMTPConnection._onData (/var/task/node_modules/nodemailer/lib/smtp-connection/index.js:772:14)
    at TLSSocket.SMTPConnection._onSocketData (/var/task/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
    at TLSSocket.emit (node:events:519:28)
    at TLSSocket.emit (node:domain:488:12)
    at addChunk (node:internal/streams/readable:559:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:510:3) {
  code: 'EAUTH',
  response: '535 5.7.139 Authentication unsuccessful, basic authentication is disabled. [CH0PR13CA0024.namprd13.prod.outlook.com 2024-11-15T12:41:27.364Z 08DD02E8CBA00082]',
  responseCode: 535,
  command: 'AUTH LOGIN'
}

此文章来源

waline的discussions貌似没人提出这个问题,可能是只有我在用Outlook吧…

看第一行就行:Mail send fail: Error: Invalid login: 535 5.7.139 Authentication unsuccessful, basic authentication is disabled.,意思是说outlook的smtp服务不支持basic authentication。
我搜了一下,发现Outlook在24年9月16日停止了个人用户对基础身份验证的支持,推荐使用OAuth2认证。详见 | Microsoft 官网
但是我没在waline文档里发现支持OAuth2。

自己写插件吗?

似乎没有必要为了一个评论系统写,毕竟人的精力是有限的(我才不会说是我菜

解决方案

于是就有了今天的主角:sendas.email

我这里就用作者部署好的项目,就不再重新部署了。 如果你想自己部署,可以先fork一下作者的项目,然后自己部署。 部署方法如下图:

部署方法
部署方法

开始解决

进入sendas.email,然后滚轮滑倒最下方,点击Sign in with Microsoft

Sign in with Microsoft | sendas.email
Sign in with Microsoft | sendas.email

登录时,Microsoft会提示你是否允许第三方应用访问你的账号,点击接受即可。

是否授权
是否授权

授权之后Microsoft账户团队就会发一个邮件提醒:

邮件提醒
邮件提醒

此时回到sendas.email,网站自动重定向到了configuration页面,页面如下图所示:

显示新的用户名+密码
显示新的用户名+密码

修改环境变量

下面回到vercel的部署,将之前的密码换成新的密码即可。

对应关系
对应关系

请注意,如果你之前使用的是SMTP_SERVICE,那么现在需要删除掉这个,然后新增SMTP_HOSTSMTP_PORT.

使用的是SMTP_SERVICE
使用的是SMTP_SERVICE

完成vercel的环境变量配置,如下图:

邮箱配置
邮箱配置

重启项目,然后就可以正常发送邮件了。

重启项目
重启项目

附录

参考

版权信息

本文原载于 彩虹兔の博客,遵循 CC BY-NC-SA 4.0 协议,复制请保留原文出处。



© Licensed Under CC BY-NC-SA 4.0