2012-08-03 106 views
2

如何通過使用xoauth驗證imap來從gmail檢索郵件。我曾嘗試已在Gmail數據API給出xoauthAuthenticator.java,xoauthprotocol.java代碼, xoauthsaslclient.java和xoauthsaslclienfactory.java如何使用imap xoauth獲取電子郵件

,但我得到的錯誤是這樣

Exception in thread "main" javax.mail.MessagingException: Remote host closed connection during handshake; 
    nested exception is: 
    javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:479) 
    at javax.mail.Service.connect(Service.java:275) 
    at XoauthAuthenticator.connectToImap(XoauthAuthenticator.java:80) 
    at XoauthAuthenticator.main(XoauthAuthenticator.java:114) 
Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source) 
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source) 
    at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97) 
    at java.io.BufferedInputStream.fill(Unknown Source) 
    at java.io.BufferedInputStream.read(Unknown Source) 
    at com.sun.mail.iap.ResponseInputStream.read0(ResponseInputStream.java:81) 
    at com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:67) 
    at com.sun.mail.iap.Response.<init>(Response.java:83) 
    at com.sun.mail.imap.protocol.IMAPResponse.<init>(IMAPResponse.java:48) 
    at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:122) 
    at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:230) 
    at com.sun.mail.iap.Protocol.<init>(Protocol.java:91) 
    at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:87) 
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:446) 
    ... 3 more 
Caused by: java.io.EOFException: SSL peer shut down incorrectly 
    at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source) 
    ... 19 more 

可能是什麼原因它?

回答

0

當SSLhandler不信任來自主機服務器的證書時,會引發SSLHandshakeException。您需要將服務器的SSL證書添加到您的密鑰庫。 Here is a good walk through of the problem以及如何解決它。

相關問題