spring boot email 切换outlook邮箱

本文记录了从腾讯企业邮箱切换到Outlook过程中遇到的问题及解决办法,包括SSL认证问题及SMTP权限配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目原先邮件发送采用spring mail ,一直用的是腾讯企业邮箱。最近需要切换outlook,原本以为只需简单改下账户密码及host等配置即可。切换之后发现发送失败,经过一番查找终于发送成功。记录一下问题。


原先邮件发送配置如下

spring.mail.username=xxxxxxxxx
spring.mail.password=xxxxxxxxx
spring.mail.host=smtp.exspring.mail.qq.com
spring.mail.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.stattls.required=true
spring.mail.properties.mail.debug=false
spring.mail.properties.mail.smtp.port=587
spring.mail.properties.mail.smtp.socketFactory.port=587
spring.mail.properties.mail.smtp.socketFactory.fallback=false
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.connectiontimeout=30000
spring.mail.properties.mail.smtp.timeout=30000
spring.mail.properties.mail.smtp.writetimeout=30000

-- 切换后配置

spring.mail.username=xxxxxxxxx
spring.mail.password=xxxxxxxxx
spring.mail.host=smtp.office365.com
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.stattls.required=true
spring.mail.properties.mail.debug=false
spring.mail.properties.mail.smtp.port=587
spring.mail.properties.mail.smtp.socketFactory.port=587
spring.mail.properties.mail.smtp.socketFactory.fallback=false
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.connectiontimeout=30000
spring.mail.properties.mail.smtp.timeout=30000
spring.mail.properties.mail.smtp.writetimeout=30000

一运行直接报错

org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587;
  nested exception is:
	javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587;
  nested exception is:
	javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
	at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:432)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:345)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340)

发现是ssl认证有问题移除spring.mail.smtp.socketFactory.class配置后

又有新错误信息

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. [HK2PR06CA0003.apcprd06.prod.outlook.com]

好像又是权限有问题,对outlook邮箱配置不熟,找了一大堆资料终于发现。需要设置SMTP权限

outlook邮箱的权限异常_Monten_Cristo的博客-优快云博客

最终配置,终于可以发出去了。另外权限配置后貌似不会立马生效,需要等上一段时间

spring.mail.username=xxxxxxxxx
spring.mail.password=xxxxxxxxx
spring.mail.host=smtp.office365.com
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.stattls.required=true
spring.mail.properties.mail.debug=false
spring.mail.properties.mail.smtp.port=587
spring.mail.properties.mail.smtp.socketFactory.port=587
spring.mail.properties.mail.smtp.socketFactory.fallback=false
#spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.connectiontimeout=30000
spring.mail.properties.mail.smtp.timeout=30000
spring.mail.properties.mail.smtp.writetimeout=30000

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值