java在本地发送邮件可以,在服务器发送报错

 跟踪追查源码发现,java mail  SMTPTransport 类 会去读取hostname 主机名

java在本地发送邮件可以,在服务器发送报错_第1张图片

java在本地发送邮件可以,在服务器发送报错_第2张图片 

注意:获取主机名之前会先去读取配置文件是否有配置,稍后会给出springboot配置。

session.getProperty("mail." + name + ".localhost");

session.getProperty("mail." + name + ".localaddress");

然后 发现 服务器的主机名是关键字,如何知道是否能够连接成功

可以在linux使用以下命令:

telnet smtp.xxx.com 25

如果提示你ready

输入 ehlo 你的主机名

或者

helo 你的主机名

给你返回250状态码 就表示成功。

如果没有返回 可以尝试 随意字符串aaa 之类的 看是否有返回

有返回250 表示 你主机名 是不能 通知对面的,换主机名或者程序中单独设置

java在本地发送邮件可以,在服务器发送报错_第3张图片

 加入 mail.smtp.localhost或者localaddress不让去读主机名就可以了,

这是我遇到的问题,解决方案就是替换主机名或者给hostname传入值。

你可能感兴趣的:(java,java,smtp)