2013-05-02 71 views
1

雖然我試圖通過Java郵件連接 服務器響應意外Java郵件驗證和連接

的問題是,有時同樣的程序連接,並獲得郵件,但有時它拋出

javax.mail.AuthenticationFailedException:socket上的EOF位於 com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:208)位於 javax.mail.Service.connect(Service.java:295)位於 javax。 mail.Service.connect(Service.java:176) newpackage.P msPOP3Client.main(PmsPOP3Client.java:44)

錯誤

當服務器說

S: +OK Hello there. 
C: CAPA 
S: +OK Here's what I can do: 

我可以連接並獲取所有郵件

S: EOF 

我甚至不能連接到服務器

我的代碼

進口java.util中。 ;導入javax.mail。; import javax.mail.event.ConnectionEvent; import javax.mail.event.ConnectionListener; import javax.mail.internet。*;

公共類PmsPOP3Client {

public static void main(String[] args) throws Exception { 
    try { 

     String host = "host"; 
     String user = "user"; 
     String password = "pass"; 
     Properties props = System.getProperties(); 
     Session session = Session.getDefaultInstance(props); 
     session.setDebug(true); 
     Store store = session.getStore("pop3"); 
     System.out.println("store.getURLName() = " + store.getURLName()); 
     store.connect(host, user, password); 
     Folder folder = store.getFolder("inbox"); 
     folder.open(Folder.READ_ONLY); 
     Message[] messages = folder.getMessages(); 
     for (int i = 0; i < messages.length; i++) { 
      System.out.println("------------ Message " + (i + 1) + " ------------"); 
      String from = InternetAddress.toString(messages[i].getFrom()); 
      if (from != null) { 
       System.out.println("From: " + from); 
      } 
      String replyTo = InternetAddress.toString(
        messages[i].getReplyTo()); 
      if (replyTo != null) { 
       System.out.println("Reply-to: " + replyTo); 
      } 
      String to = InternetAddress.toString(
        messages[i].getRecipients(Message.RecipientType.TO)); 
      if (to != null) { 
       System.out.println("To: " + to); 
      } 
      String cc = InternetAddress.toString(
        messages[i].getRecipients(Message.RecipientType.CC)); 
      if (cc != null) { 
       System.out.println("Cc: " + cc); 
      } 
      String bcc = InternetAddress.toString(
        messages[i].getRecipients(Message.RecipientType.BCC)); 
      if (bcc != null) { 
       System.out.println("Bcc: " + to); 
      } 
      String subject = messages[i].getSubject(); 
      if (subject != null) { 
       System.out.println("Subject: " + subject); 
      } 
      Date sent = messages[i].getSentDate(); 
      if (sent != null) { 
       System.out.println("Sent: " + sent); 
      } 
      Date received = messages[i].getReceivedDate(); 
      if (received != null) { 
       System.out.println("Received: " + received); 
      } 
      System.out.println(); 
     } 

     folder.close(true); 
     store.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} } 
+0

到底是什麼問題?請定義「意外」。 – 2013-05-02 11:32:25

+0

問題是,有時候相同的程序連接並獲取郵件,但有時它會拋出javax.mail.AuthenticationFailedException:插座上的EOF \t at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:208) \t在javax.mail.Service.connect(Service.java:295) \t在javax.mail.Service.connect(Service.java:176) \t在newpackage.PmsPOP3Client.main(PmsPOP3Client.java:44) 錯誤 – Complicated 2013-05-02 11:35:37

回答

0

您可能需要檢查是否有您的服務器上的一些端口爭用。這可能是由於某些其他程序有時使用相同的端口,並與您自己的郵件服務器衝突。檢查服務器機器是否存在防火牆/病毒掃描/等,可能會暫時阻塞端口並阻止客戶端連接。

3

你應該嘗試使用POP3S作爲protocal,而不是作爲POP3以下

Store store = session.getStore("pop3s");