2012-10-08 62 views
3

我試圖連接到我的Gmail收件箱以通過Java應用程序讀取消息。我使用..JavaMail store.connect()超時 - 無法通過Java讀取Gmail收件箱

  • jdk1.6.0_13
  • 的JavaMail-1.4.3庫 - (的mail.jar,mailapi.jar和imap.jar)

下面是我的代碼:MailReader.java

import java.util.Properties; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Store; 

public class MailReader 
{ 
    public static void main(String[] args) 
    { 
     readMail();  
    } 

    public static void readMail() 
    { 
     Properties props = System.getProperties(); 
     props.setProperty("mail.store.protocol", "imaps"); 
     try 
     { 
      Session session = Session.getDefaultInstance(props, null); 
      Store store = session.getStore("imaps"); 
      store.connect("imap.gmail.com", "[email protected]", "myPwd"); 
      System.out.println("Store Connected.."); 

      //inbox = (Folder) store.getFolder("Inbox"); 
      //inbox.open(Folder.READ_WRITE); 
      //Further processing of inbox.... 
     } 
     catch (MessagingException e) 
     { 
      e.printStackTrace();    
     } 
    } 
} 

我期望能獲得商店連接,而是調用store.connect()永遠不會返回,我得到以下的輸出:


javax.mail.MessagingException:連接超時;
嵌套 例外是:
java.net.ConnectException:連接超時
在 com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:441)
在 javax.mail.Service。連接(Service.java:233)
在 javax.mail.Service.connect(Service.java:134)
在 ReadMail.readMail(ReadMail.java:21)
在ReadMail.main(ReadMail.java :10)

但是我能夠通過Java使用SMTP,Transport.send()和相同的Gmail帳戶發送電子郵件。但不能閱讀電子郵件。 什麼是解決方案?

回答

0

IMAP將不同的端口(143爲非安全,993爲安全)運行到sendmail(25),我懷疑它被阻止。您可以在該端口上遠程登錄到該服務器,例如

telnet imap.gmail.com {port number} 

這會指示您是否有網絡連接。

+0

我在linux上,所以我做了「nmap -p 993 imap.gmail.com」,我的狀態是「過濾」。所以我想你是對的,那個端口被阻塞了。 – viv

+0

使用telnet或其他網絡實用程序來診斷網絡問題是我知道的最簡單的方法,以便在服務器正常運行時進行完整性檢查 –

+0

謝謝!我被困了好幾個小時.. – viv