这篇文章主要介绍了如何解决Java mail ssl并存的一个问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
最近在做java mail ssl遇到一个问题:使用JavaMail收取邮件在系统运行一定时间后,无法成功.
出错信息是这样的:
javax.mail.MessagingException: Connect failed;
nested exception is:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
或者未启用SSL的mail服务器出错如下:
nested exception is:
java.net.ConnectException: Connection refused
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
telnet到邮件服务器,用户名密码都没有问题,看来只有程序问题了。
创建MailSession时用到Properties props = System.getProperties();把这个打印出来的时候发现错误了,本来不应该使用SSL验证的,却出现了验证信息不应该出现这个,所以现在在每次POP3链接的时候如果不需要SSL链接都remove这些属性,问题没有了。
终于知道谁改动了System.getProperties();原来在同一个Tomcat中还运行了另外一个系统,那个系统使用的邮件服务器是采用SSL验证发送接收邮件的,而且30分钟会收取一次邮件,由于程序写的不够严谨,就出现以上的错误,改进了程序后,两个系统终于可以并存于一个TOMCAT中。
感谢你能够认真阅读完这篇文章,希望小编分享的“如何解决Java mail ssl并存的一个问题”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!