引言
在本博客的评论系统接入邮箱提醒时,用到了outlook的smtp服务,但是在使用时却发现没有邮件提醒。
查看日志
于是上vercel看了一下日志,如下图:

报错堆栈如下:
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

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

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

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

修改环境变量
下面回到vercel的部署,将之前的密码换成新的密码即可。

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

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

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


说些什么吧!