笔者在开发Spring Boot社区项目时,用到了Spring Mail来发用身份验证邮件,在本地(Windows)功能能够正常使用,部署到阿里云时无法正确发送邮件,具体原因及解决方法如下。
版权声明:本文为博主原创文章,禁止转载
作者博客:codesong.cn
created: 2019-12-30
Spring Mail配置
# MailProperties
spring.mail.host=smtp.sina.com
#spring.mail.port=465
spring.mail.username=username@sina.com
spring.mail.password=d669000000000000
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
报错
在社区注册功能页面,用户输入邮箱并点击注册按钮后,服务器应通过spring mail向用户发送一封验证邮件。然而部署到阿里云服务器后,页面等待60s(nginx设置超时时间为3次30秒)后提醒504 Gateway Timeout*错误,说明服务器没有正确处理请求。
解决方法
查看日志发现spring mail授权错误,无法连接邮箱:
org.springframework.mail.MailAuthenticationException: Authentication failed
查阅资料后发现阿里云已禁用邮箱25端口,使用465端口发送邮件,因此需要在阿里云控制台安全组中开放465端口,再次测试问题解决。