跟踪追查源码发现,java mail SMTPTransport 类 会去读取hostname 主机名
注意:获取主机名之前会先去读取配置文件是否有配置,稍后会给出springboot配置。
session.getProperty("mail." + name + ".localhost");
session.getProperty("mail." + name + ".localaddress");
然后 发现 服务器的主机名是关键字,如何知道是否能够连接成功
可以在linux使用以下命令:
telnet smtp.xxx.com 25
如果提示你ready
输入 ehlo 你的主机名
或者
helo 你的主机名
给你返回250状态码 就表示成功。
如果没有返回 可以尝试 随意字符串aaa 之类的 看是否有返回
有返回250 表示 你主机名 是不能 通知对面的,换主机名或者程序中单独设置
加入 mail.smtp.localhost或者localaddress不让去读主机名就可以了,
这是我遇到的问题,解决方案就是替换主机名或者给hostname传入值。