温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Mail发送邮件异常问题有哪些

发布时间:2021-11-24 16:46:26 来源:亿速云 阅读:673 作者:iii 栏目:大数据

这篇文章主要讲解了“Java Mail发送邮件异常问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java Mail发送邮件异常问题有哪些”吧!

 一.常用Session属性

在使用JavaMail发送邮件时,一般需要指定一些属性参数,是通过Session使用java.util.Properties来构造,常用的用来构造Session的属性如下: 

mail.smtp.user
 SMTP的缺省用户名。
 
mail.smtp.host
 要连接的SMTP服务器
 
mail.smtp.port
 要连接的SMTP服务器的端口号,如果connect没有指明端口号就使用它,缺省值25。
 
mail.smtp.auth
 缺省是false,如果为true,尝试使用AUTH命令认证用户。
 
mail.transport.protocol
 要装入session的协议(smtp、pop3、imap、nntp)。
 
mail.smtp.connectiontimeout
 Socket连接超时值,单位毫秒,缺省值不超时。
 
mail.smtp.timeout
 Socket I/O超时值,单位毫秒,缺省值不超时。
 
mail.smtp.from
 SMTP MAIL使用的Email地址,用来设置邮件的return地址。缺省是Message.getFrom()或InternetAddress.getLocalAddress()。注意:mail.smtp.user优先使用
 
mail.smtp.localhost
 localhost名,缺省是InetAddress.getLocalHost().getHostName()。如果JDK和name service正确配置,一般不需设置。
 
mail.host
 邮件交互的主机。
 
mail.smtp.ehlo
 如果为false,那么不会尝试使用EHLO命令登录,缺省是true。通常EHLO命令失败,会倒退到HELO命令。这个属性只有在服务器没有fail EHLO属性或没有实现EHLO属性。
 
mail.user
 登录邮件服务器的用户名(发送邮件时需要)。
 
mail.from
 发件人地址(发送邮件时需要)。

二.异常问题总结

1.发送邮件异常

在使用springmail发送邮件时,未指定mail.smtp.localhost,本来代码运行正常,突然有一天,新设备的hostname发生变化,无法正常发送邮件。异常如下:

Java Mail发送邮件异常问题有哪些

最终排查发现是hostname的问题。

解决方法一:

修改/etc/hosts文件,增加hostname与ip地址间的映射,如下,最后一行为新增:

Java Mail发送邮件异常问题有哪些

解决方法二:

发送邮件Session属性中增加mail.smtp.localhost的配置,如下(一般localhost是存在的)

prop.put("mail.smtp.localhost","localhost");

原因:

JavaMail发送邮件时,会提取本地hostname之后,会已ip的形式去发送邮件,但是在linux服务器下,无法解析hostname对应的本机ip地址,导致JavaMail无法调用ip发送。Postfix 收到这种邮件将拒绝发送,而产生 501 错误。(windows服务器可以发送,是由于采用了不netbios 协议去获得该主机的 ip 地址,所以可以获取到ip)

在/etc/hosts配置有问题时,也出现过以下异常,以备参考:

Java Mail发送邮件异常问题有哪些

感谢各位的阅读,以上就是“Java Mail发送邮件异常问题有哪些”的内容了,经过本文的学习后,相信大家对Java Mail发送邮件异常问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI