2012-03-17 23 views
0

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 
+0

は、Javaのバージョンは何を実行していますか?いくつかのバージョン固有のバグがあります(例:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6668231)。 – dsolimano

+0

@dsolimanoこのバージョンのJava(TM)SE Runtime Environment(ビルド1.6.0_21-b06)を使用しています。私はこの行を閉じるコードをいくつか変更しました。props.put( "mail.smtp.socketFactory.class"、 "javax.net.ssl.SSLSocketFactory");ポート465を現在の26に置き換えてください。だから私はSSLの行を持っている場合、それはまたいくつかの例外を与える。だから私は正しい方法で何かをやっているのですか? –

答えて

0

このタイプの問題には複数の原因があります。他の人があなたに話していることを追加して、次のことを試してください。

mail.smtps.* 

mail.smtp.* 

から

変更し、すべてのあなたの小道具のキー私はこのスタイルを使用します。

final String ssl = isSecure ? "s" : ""; 
props.put("mail.smtp" + ssl + ".auth", "true"); 
関連する問題