JavaMail发送邮件异常问题有哪些

这篇文章主要讲解了“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发送邮件异常问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网页题目:JavaMail发送邮件异常问题有哪些
标题链接:http://azwzsj.com/article/ggihpe.html