1
votes

I'm trying this code I found with google, but it didn't connect to my gmail inbox. Why?

I have this error message:

 --------------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)

The code is:

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();
}

}
1

1 Answers

2
votes

You are connecting with protocol imap (IMAP without SSL), which isn't supported by GMail. You need to use imaps (IMAP with SSL).

See GMail help and the JavaMail FAQ entry on GMail