Could not connect to SMTP host: smtp.163.com, port: 465, response: -1

Could not connect to SMTP host: smtp.163.com, port: 465, response: -1


1、背景

记录一次非常奇怪的问题。
项目中有一个定时发送邮件的功能;在一个风和丽日的早上,业务咔咔一顿消息,邮件怎么不发了。
额、、、
更奇怪的是,部分能发送,部分不能发送。

Could not connect to SMTP host: smtp.163.com, port: 465, response: -1

2、解决

服务器一顿排查,均无异常。

  • 1、CPU,经排查发邮件当时CPU并不高,且系统没有宕机。
  • 2、内存,经排查,内存占用也属于正常值。
  • 3、磁盘,磁盘容量。
  • 4、发布,近一个月并无发布情况。

既然不是服务器相关的问题,那就从代码本身查找问题。


  • 1、SSL/TLS协议问题:

可能是因为您使用的Java环境中禁用了某些SSL/TLS协议版本。在Java高版本中,默认禁用了SSLv3, TLSv1, TLSv1.1等协议。您需要在代码中指定使用的TLS版本。例如:

prop.put("mail.smtp.ssl.protocols", "TLSv1.2");

请确保您的Java环境支持您指定的TLS版本,并且没有禁用它。


  • 2、端口和加密设置:

确保您的代码中正确设置了使用SSL加密的端口和相应的Socket工厂。例如:

prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.put("mail.smtp.ssl.enable", true);

同时,确保您使用的端口是465,这是SMTPS(SMTP over SSL)的标准端口。


  • 3、Java环境配置:

如果您在阿里云等云服务上部署应用,可能需要检查云服务的安全组设置,确保465端口没有被阻止。


  • 4、邮件协议配置:

在某些情况下,如果您使用的是端口465,应该在配置中使用SMTPS协议而不是SMTP。例如,在Spring Boot的配置文件中,应该设置:

spring.mail.protocol=smtps

这将确保您的应用使用正确的协议与SMTP服务器通信。


  • 5、环境问题:

如果您最近升级了JDK版本,可能需要检查JAVA_HOME/jre/lib/security/java.security文件中的配置,确保没有禁用您需要使用的TLS版本。


好吧,以上都是AI搜集了37个网页整理回答的,还挺不错的。

以下是对应截图。
在这里插入图片描述

这个就不是AI回答的咯

  • 6、附件

因为并非全部不能发送,部分能成功,部分不能成功,所以考虑是否是附件过大导致的问题。但后续手动触发邮件的发送的时候,发现大附件也能正常发送,故排除此情况。

  • 7、检查端口

邮件采用默认端口 465(加密),和25(非加密),如果是在阿里云等云平台部署,需要检查一下近期是否有安全策略的调整。比如对25端口的禁用。可以根据端口开放情况设置对应的端口。

  • END:解决问题
    排查发现代码并没有设置协议,增加如下配置:
Properties properties = new Properties();
properties.put("mail.smtp.ssl.enable", true);
properties.put("mail.smtp.ssl.protocols", "TLSv1.2");

问题解决。


OK,就这些吧。
有什么不对的还望指正,书写不易,觉得有帮助就点个赞吧!☺☺☺

参考链接:https://www.cnblogs.com/luoxiao1104/p/16672860.html
https://blog.csdn.net/cry1049208942/article/details/97183552

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

message丶小和尚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值