电子邮件服务器不允许像Gmail服务器允许的那样



我一直在使用Gmail发送电子邮件,所以现在我试图将我们的邮件转移到另一个邮件服务器。以下是设置。

Properties props = new Properties();        
      props.put("mail.smtp.host", "*******");       
      props.put("mail.smtp.socketFactory.port", "465");     
      props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");      
      props.put("mail.smtp.auth", "true");      
      props.put("mail.smtp.port", "465");       
      Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() 
      {             
        protected PasswordAuthentication getPasswordAuthentication() 
        {                   
        return new PasswordAuthentication("******","******");               
        }       
      });

下面是我得到的错误。

javax.mail.MessagingException: Could not connect to SMTP host: *******, port: 465
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.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at commServer9000$MailProcessor.run(commServer9000.java:6518)
at java.lang.Thread.run(Thread.java:619)
Caused by: 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.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1623)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:198)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:192)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1074)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:128)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1120)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1147)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1131)
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
    ... 8 more
这类问题有多种原因。除了别人告诉你的以外,还可以试试下面的方法。

从更改所有道具密钥

mail.smtp.* 

mail.smtps.*

我使用这种风格:

 final String ssl = isSecure ? "s" : "";
 props.put("mail.smtp" + ssl + ".auth", "true");

最新更新