javaMail 发送邮件本地可以,linux系统不能发送报错

服了,就这问题困扰了几天,终于搞定。总结一下:

  1. 遇到问题还得自己认真看日志,别人写的文章,建议都是引导;

  1. 多看看源码,理解他的原理;

  1. 不啰嗦了,上问题

本地推送日志没问题

没问题能发送邮件,但是到了linux服务器以后就报错如图:

原因出在哪了呢?看源码根据报错1678行,跟踪到SMTPTransport类这段代码

啥意思呢,这儿取的是域名信息,而内网没有域名啊,而连接邮箱服务器的时候它要带上系统域名信息,才能返回连接信息,邮箱服务器通了以后要跟主机互通,可是我的linux服务器的只通内网,内网也不需要域名啊,域名把打通信息带跑偏了,一直报错。

看源码感觉日志里面这EHLo host-10-211-72-238.openstackloca7有问题,就是不知道问题在哪,localHostName = localHost.getCanonicalHostName()方法,它是取的域名,linux主机内网系统哪来的域名,跟linux主机名也不一致啊,后来我在配置里面加上prop.setProperty("mail.smtp.localhost", inetAddr.getHostName()); 获取主机名称,这样第一步互通打好了。如下图

这就取到主机名称,调到邮箱服务器以后,服务器根据主机名称找回到发送主机。我感觉这儿应该改成IP是最好的。IP获取如下

InetAddress inetAddr = InetAddress.getLocalHost();

//获得本地主机的IP地址

String ip = inetAddr.getHostAddress();

其他情况文章很多,可以找到,我这种情况独特全网没有描述,所以记录一下,可以交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值