outlook邮箱的权限异常

邮件项目上线后,出现了一些小bug。

产品找到我说有个outlook邮箱无法发送邮件,暂且就把这个邮箱称作是“bug@outlook.com”吧。

outlook邮箱的权限异常

既然发送失败,第一时间就是拉取日志查看异常原因了,异常原因“Caused by: javax.mail.AuthenticationFailedException: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information. [HK2PR04CA0071.apcprd04.prod.outlook.com]”。

Caused by: javax.mail.AuthenticationFailedException: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information. [HK2PR04CA0071.apcprd04.prod.outlook.com]

	at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:965)
	at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:876)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:780)
	at javax.mail.Service.connect(Service.java:366)
	at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:517)
	at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:436)
	... 43 more

有经验的小伙伴根据报错位置,就能知道,这不是代码的锅。为了验证,我专门用了一个其他的outlook邮箱,也可以正常发送,问题就出现在这个邮箱的权限上。

但是为什么会报权限异常的错误呢?

我查看了该邮箱最近一次发送成功的记录是6.3,本次发送失败时间是在6.5,而这期间代码没有任何改动。出现这种异常只能是邮箱的设置被人为变更了。于是我在群里问,最近是否有人更改过邮箱配置。结果你懂得,已读没人回复。。。

outlook邮箱的权限异常

一般来说,发生AuthenticationFailedException异常,无外乎以下几个原因:

①账号密码错误

②发送协议配置错误

③第三方发送授权未开启

账号密码错误:利用数据库中的账号配置,成功登陆邮箱,并发送成功。

发送协议配置错误:数据库中的接收和发送协议,与outlook官网提供的完全一致。

第三方授权未开启:outlook邮箱只提供了开启POP3和IMAP的选择,而对于SMTP是默认开启的。

这里简要说一下,POP和IMAP是用来接收邮件的,如果需要第三方发送邮件,必须使用SMTP。

outlook邮箱的权限异常

三个可能的原因都给我排除掉了,异常信息中出现了SmtpClientAuthentication,问题只能是出现在SMTP协议上了。

找到了微软的这篇文章,Enable or disable authenticated client SMTP submission (SMTP AUTH) in Exchange Online,文中有这样的操作指导

outlook邮箱的权限异常

 原来真的可以设置SMTP,但是需要管理员设置,而不是个人在邮箱中。微软这一点和我们普通认知的QQ,网易,GAMIL都不太一样。

于是我紧急找到了管理员,查看该邮箱的权限设置,果然SMTP被人关掉了。。。(谁这么手贱)

点上SMTP,保存,然后再次尝试,邮件仍就发送失败,但是异常提示我“please try again later”。于是等待十来分钟后重试,邮件发送成功!

outlook邮箱的权限异常

后序,我刚解决完这个问题,通知用户重试之后,有个哥们就私信我,说是他周五测试关掉了权限,但是测试完了之后忘记还原权限了。我谢谢你啊,你一个忘记,让我抓耳挠腮两小时。。。

上一篇:Spring Boot 发送邮件 javax.mail


下一篇:关于QQ短信接口的使用。