2012-03-31 44 views
2

晚安SO通過java在Gmail中閱讀POP3郵件

我試圖製作一段可以通過POP協議檢索郵件的精彩代碼。我到目前爲止已遵循RFC1939(POP規範)。

而實際上它的工作與我的虛擬主機的POP3服務器(這是不支持SSL),但使用Gmail時,我得到的是空的反應:(

我想這是一個的「突破」,它的SSL的一部分。

在我的「開放式」功能,創建套接字我有這樣的:

public void open() throws UnknownHostException, IOException 
{ 
    if(this.SSL) 
    { 
     SSLSocketFactory fac = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
     this.s = fac.createSocket(this.in_host, this.in_port); 
    } 
    else 
    { 
     this.s = new Socket(this.in_host, this.in_port); 
    } 

    this.out = new PrintWriter(s.getOutputStream(), true); 
    this.in = new BufferedReader(new InputStreamReader(s.getInputStream())); 
} 

其中SSL是指示連接一個布爾值應該是通過SSL,並且s是插座in_host和。是主機(pop.gmail.com)和端口(995)。 outin是我寫入和讀取的流。

其中最糟糕的部分是它不會拋出任何錯誤。我通常會得到答案,我只是得到一個空字符串。

問題是:如何通過SSL/TLS連接到POP服務器,最好是Gmail服務器?

回答

3

大約是這樣的內容:

public void connect() throws Exception { 

    String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 

    Properties pop3Props = new Properties(); 

    pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); 
    pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false"); 
    pop3Props.setProperty("mail.pop3.port", "995"); 
    pop3Props.setProperty("mail.pop3.socketFactory.port", "995"); 

    URLName url = new URLName("pop3", "pop.gmail.com", 995, "", 
      username, password); 

    session = Session.getInstance(pop3Props, null); 
    store = new POP3SSLStore(session, url); 
    store.connect(); 

} 

更多信息請參閱本article

+0

我試圖避免使用javax.mail.Message和javax.mail.Folder:/但是,它的工作原理,因爲它應該,它只是不符合我的需要:) – f2lollpll 2012-03-31 21:39:37

相關問題