Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl javamail:在明确配置imap和143时接收来自993的电子邮件?我正在使用getInstance()_Ssl_Jakarta Mail_Imap - Fatal编程技术网

Ssl javamail:在明确配置imap和143时接收来自993的电子邮件?我正在使用getInstance()

Ssl javamail:在明确配置imap和143时接收来自993的电子邮件?我正在使用getInstance(),ssl,jakarta-mail,imap,Ssl,Jakarta Mail,Imap,我正在将我的web项目部署到客户机环境中,在那里我们被告知不要使用SSL和IMAPS。因此,我们配置了以下属性: mail.recv.protocol=imap mail.recv.port=143 但根据客户机-服务器日志,我们得到了以下异常: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExcep

我正在将我的web项目部署到客户机环境中,在那里我们被告知不要使用SSL和IMAPS。因此,我们配置了以下属性:

mail.recv.protocol=imap
mail.recv.port=143
但根据客户机-服务器日志,我们得到了以下异常:

 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; 
  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.imap.IMAPStore.protocolConnect(IMAPStore.java:695) 
        at javax.mail.Service.connect(Service.java:345) 
        at javax.mail.Service.connect(Service.java:226) 

并且提供了其他信息,我们是通过993连接的,因此我们找不到证书,因为jvm要求它。但我们必须通过143连接

通过这些代码,我们可以实现连接。如您所见,我们没有使用
getDefaultInstance()
进行连接

input = CorreoAction.class.getResourceAsStream("/config/properties/mail.properties"); //we load `prop` from file
        Properties prop = new Properties();
        prop.load(input);
.....
    prop1 = new Properties(); //we copy prop to prop1 for `store`
        prop1.setProperty("mail.imap.connectiontimeout", "5000");
        prop1.setProperty("mail.imap.timeout", "5000");
        prop1.setProperty("mail.imap.host", prop.getProperty("mail.recv.host"));
        prop1.setProperty("mail.imap.port", prop.getProperty("mail.recv.port"));
        prop1.setProperty("mail.imap.ssl.trust", "*");
        prop1.setProperty("mail.imap.auth.plain.disable", "false");

        sesion = Session.getInstance(prop1); //connect with sesion.

        store = sesion.getStore(prop.getProperty("mail.recv.protocol")); //imap, not imaps.
        store.connect(prop.getProperty("mail.recv.host"), prop.getProperty("mail.recv.user"), prop.getProperty("mail.recv.pass"));

所以,问题是:如果我们强迫它使用143和imap,为什么应用程序连接到993

我怀疑你没有得到你认为你得到的财产。表演什么?再次谢谢你,比尔。嗯,我倾向于打开它,但在客户的环境中,我们关闭了它。另一件事是,尽管在我的代码中,我从WAR中的
.properties
文件中读取了prop,但在客户的机器中,他们以某种方式将其指向另一个文件,在该文件中,他们操纵自己的参数以满足银行的安全要求。我不知道他们是如何做到这一点的,但当他们更改
.properties
文件中的参数时,出现了不同的错误,所以我想这是可行的。当然,他们用
imap
代替
imaps
,还有
143
。这可能是原因吗?正确发送属性是成功与失败的区别。如果不确切知道他们设置了什么,很难说他们做错了什么。