2011-11-10 85 views
1

我正在嘗試此代碼,我發現與谷歌,但它沒有連接到我的Gmail收件箱。爲什麼?無法連接到我的Gmail收件箱與Java

我有這樣的錯誤消息:

 
--------------processing mails started----------------- 
    getting the session for accessing email. 
    Not able to process the mail reading. 
    javax.mail.MessagingException: Connection timed out: connect; 
     nested exception is: 
     java.net.ConnectException: Connection timed out: connect 
     at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:618) 
     at javax.mail.Service.connect(Service.java:291) 
     at javax.mail.Service.connect(Service.java:172) 
     at readEmails.processMail(readEmails.java:47) 
     at readEmails.(readEmails.java:19) 
     at readEmails.main(readEmails.java:165) 
    Caused by: java.net.ConnectException: Connection timed out: connect 
     at java.net.PlainSocketImpl.socketConnect(Native Method) 
     at java.net.PlainSocketImpl.doConnect(Unknown Source) 
     at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
     at java.net.PlainSocketImpl.connect(Unknown Source) 
     at java.net.SocksSocketImpl.connect(Unknown Source) 
     at java.net.Socket.connect(Unknown Source) 
     at java.net.Socket.connect(Unknown Source) 
     at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284) 
     at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227) 
     at com.sun.mail.iap.Protocol.(Protocol.java:109) 
     at com.sun.mail.imap.protocol.IMAPProtocol.(IMAPProtocol.java:104) 
     at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:585) 

的代碼是:

import javax.mail.AuthenticationFailedException; 
import javax.mail.Folder; 
import javax.mail.FolderClosedException; 
import javax.mail.FolderNotFoundException; 
import javax.mail.Message; 
import javax.mail.Multipart; 
import javax.mail.NoSuchProviderException; 
import javax.mail.Part; 
import javax.mail.ReadOnlyFolderException; 
import javax.mail.Session; 
import javax.mail.Store; 
import javax.mail.StoreClosedException; 
import javax.mail.internet.InternetAddress; 

public class readEmails { 

//Constructor Call 
public readEmails() { 
    processMail(); 
} 

//Responsible for printing Data to Console 
private void printData(String data) { 
    System.out.println(data); 
} 

public void processMail() { 
    Session session = null; 
    Store store = null; 
    Folder folder = null; 
    Message message = null; 
    Message[] messages = null; 
    Object messagecontentObject = null; 
    String sender = null; 
    String subject = null; 
    Multipart multipart = null; 
    Part part = null; 
    String contentType = null; 

    try { 
     printData("--------------processing mails started-----------------"); 
     session = Session.getDefaultInstance(System.getProperties(), null); 

     printData("getting the session for accessing email."); 
     store = session.getStore("imap"); 

     store.connect("imap.gmail.com","[email protected]","mypassword"); 
     printData("Connection established with IMAP server."); 

     // Get a handle on the default folder 
     folder = store.getDefaultFolder(); 

     printData("Getting the Inbox folder."); 

     // Retrieve the "Inbox" 
     folder = folder.getFolder("inbox"); 

     //Reading the Email Index in Read/Write Mode 
     folder.open(Folder.READ_WRITE); 

     // Retrieve the messages 
     messages = folder.getMessages(); 

     // Loop over all of the messages 
     for (int messageNumber = 0; messageNumber < messages.length; messageNumber++) { 
      // Retrieve the next message to be read 
     message = messages[messageNumber]; 

      // Retrieve the message content 
      messagecontentObject = message.getContent(); 

      // Determine email type 
      if (messagecontentObject instanceof Multipart) { 
       printData("Found Email with Attachment"); 
       sender = ((InternetAddress) message.getFrom()[0]).getPersonal(); 

       // If the "personal" information has no entry, check the address for the sender information 
       printData("If the personal information has no entry, check the address for the sender information."); 

      if (sender == null) { 
      sender = ((InternetAddress) message.getFrom()[0]).getAddress(); 
      printData("sender in NULL. Printing Address:" + sender); 
      } 
       printData("Sender -." + sender); 

       // Get the subject information 
       subject = message.getSubject(); 

       printData("subject=" + subject); 

       // Retrieve the Multipart object from the message 
       multipart = (Multipart) message.getContent(); 

       printData("Retrieve the Multipart object from the message"); 

       // Loop over the parts of the email 
       for (int i = 0; i < multipart.getCount(); i++) { 
        // Retrieve the next part 
        part = multipart.getBodyPart(i); 

        // Get the content type 
        contentType = part.getContentType(); 

        // Display the content type 
      printData("Content: " + contentType); 

        if (contentType.startsWith("text/plain")) { 
      printData("---------reading content type text/plain mail -------------"); 
      } else { 
      // Retrieve the file name 
      String fileName = part.getFileName(); 
      printData("retrive the fileName="+ fileName); 
      } 
      } 
     } else { 
      printData("Found Mail Without Attachment"); 
      sender = ((InternetAddress) message.getFrom()[0]).getPersonal(); 

       // If the "personal" information has no entry, check the address for the sender information 
      printData("If the personal information has no entry, check the address for the sender information."); 

       if (sender == null) { 
     sender = ((InternetAddress) message.getFrom()[0]).getAddress(); 
     printData("sender in NULL. Printing Address:" + sender); 
     } 

      // Get the subject information 
     subject = message.getSubject(); 
     printData("subject=" + subject); 
    } 
     } 

     // Close the folder 
     folder.close(true); 

     // Close the message store 
     store.close(); 
    } catch(AuthenticationFailedException e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } catch(FolderClosedException e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } catch(FolderNotFoundException e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } catch(NoSuchProviderException e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } catch(ReadOnlyFolderException e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } catch(StoreClosedException e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } catch (Exception e) { 
    printData("Not able to process the mail reading."); 
    e.printStackTrace(); 
    } 
} 

//Main Function for The readEmail Class 
public static void main(String args[]) { 
    //Creating new readEmail Object 
    readEmails readMail = new readEmails(); 

    //Calling processMail Function to read from IMAP Account 
    readMail.processMail(); 
} 

} 

回答