这篇文章主要讲解了“Java Mail发送邮件异常问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java Mail发送邮件异常问题有哪些”吧!
站在用户的角度思考问题,与客户深入沟通,找到偏关网站设计与偏关网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟空间、企业邮箱。业务覆盖偏关地区。
在使用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发生变化,无法正常发送邮件。异常如下:
最终排查发现是hostname的问题。
解决方法一:
修改/etc/hosts文件,增加hostname与ip地址间的映射,如下,最后一行为新增:
解决方法二:
发送邮件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发送邮件异常问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!