近些日子在开发一基于同态加密的匿名投票系统,系统目前已初步成型,故部署到服务器试运行。部署到阿里云服务器后出现了邮件发送失败的情况,特来记录下相关解决方案。
当时在本地环境下,系统运行正常,通知邮件也可以正常发送,但部署到云端却出了问题。因为邮件模块是异步的调用,起初我以为是执行顺序和服务器速度的问题,但经过反复测试,发现每当调用邮件模块后台进程便会出现TIME WAIT
的进程,最终确定问题并非在这两个地方,而是其执行被阻塞了,经过查询最终确定了问题发生在了 端口 上。
阿里云服务器为了安全期间,将 25 端口进行了封禁。得知该消息后,我特地前往服务器控制台开放了 25 端口,这时发现,邮件竟然发送成功了!但是,我并没有直接结案,而是测试了多消息群发的情况,果真又出现了问题,主要如下:
- 速度缓慢
- 邮件存在漏发
于是,决定采取另外的方式来完善该邮件模块以适应阿里云服务器的环境:更改端口。
在生产环境下的通过互补添加配置来实现
spring:
mail:
properties:
mail:
smtp:
ssl:
trust: smtp.qq.com
socketFactory:
class: javax.net.ssl.SSLSocketFactory
port: 465 # 更换的端口号
auth: true
starttls:
enable: true
required: true
因为使用的是 QQ 邮箱所以是 qq 的邮件服务器,各位可根据实际情况进行更改。