Ask Me Help Desk

Ask Me Help Desk (https://www.askmehelpdesk.com/forum.php)
-   Java (https://www.askmehelpdesk.com/forumdisplay.php?f=440)
-   -   How can I read Gmail or Yahoo mail messages using Javamail? (https://www.askmehelpdesk.com/showthread.php?t=216409)

  • May 15, 2008, 07:22 PM
    vasavi
    How can I read Gmail or Yahoo mail messages using Javamail?
    Hi,

    I want to connect to gmail or Yahoo mail server to fetch the new messages. I am trying to connect to gmail using the code below, but I am getting this error:


    " javax.mail.MessagingException: Connect failed;
    nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3St ore.java:161)"


    What would be the reason? Can you please suggest ways to handle it?


    Code:


      public class TestMail{
     
        public static void main(String[] args)
        {
                String user="xxx";
                    String passwd="yyy";
                new TestMail().receive(user,passwd);
        }
       
     
        public void receive(String username,String password)

    {
            String host = "pop3.gmail.com";
            try {
                Properties prop = new Properties();
                prop.setProperty("mail.pop3.socketFactory.class",
                                            "javax.net.ssl.SSLSocketFactory");
                prop.setProperty("mail.pop3.socketFactory.fallback", "false");
                prop.setProperty("mail.pop3.port", "995");
                prop.setProperty("mail.pop3.socketFactory.port", "995");
             
                prop.put("mail.pop3.host", host);
                prop.put("mail.store.protocol", "pop3");
                Session session = Session.getDefaultInstance(prop);
                Store store = session.getStore();
                System.out.println("your ID is : "+ username);
                System.out.println("Connecting...");
                store.connect(host, username, password);
                System.out.println("Connected...");
                Folder inbox = store.getDefaultFolder().getFolder("INBOX");
                inbox.open(Folder.READ_ONLY);
     
                Message[] msg = inbox.getMessages();
               
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
     
                for (int i = 0; i < msg.length; i++) {
                  System.out.println("Subject:" + msg[i].getSubject());
                  System.out.println("Read message? [Y to read / N to end]");
                  String line = reader.readLine();
                  if ("Y".equalsIgnoreCase(line))
                  {
                    handleMultipart(msg[i]);
                    System.out.println("****************************");
                  }
                  else if ("N".equalsIgnoreCase(line))
                  {
                    break;
                  }
                  else
                  {}
                }
                if (inbox != null) {
                    inbox.close(true);
                }
                if (store != null) {
                    store.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

          private void handle(Message msg) throws Exception {
            System.out.println("From:" + msg.getFrom()[0].toString());
            System.out.println("SentDate:" + msg.getSentDate());
        }
     
        private void handleText(Message msg) throws Exception {
            handle(msg);
            System.out.println("Content:"+msg.getContent());
        }
     
        private void handleMultipart(Message msg) throws Exception {
            String disposition;
            BodyPart part;
            Multipart mp = (Multipart) msg.getContent();
            int mpCount = mp.getCount();
            for (int m = 0; m < mpCount; m++) {
                handle(msg);
                part = mp.getBodyPart(m);
                disposition = part.getDisposition();
                System.out.println(disposition);
                if (disposition != null && disposition.equals(Part.ATTACHMENT))
                {
                  BufferedReader areader = new BufferedReader(new InputStreamReader                (System.in));
                  System.out.println("you get an attachment : " + part.getFileName());
                  System.out.println("Save attachment? [Y to read / N to end]");
                  String line = areader.readLine();
                  if ("Y".equalsIgnoreCase(line))
                  {
                    saveAttach(part);
                  }
                  else{}
                } else if(disposition.equals(Part.INLINE)){
                    System.out.println(part.getContent());
                } else {}
            }
        }

    }

    Thank you,
    Vasavi
  • May 15, 2008, 07:26 PM
    CFZD
    I can't get on either! So I guess we are not the only ones.
  • May 15, 2008, 09:44 PM
    Scleros
    See Configuring other mail clients.

    Blind stab: That document lists POP3 host as "pop.gmail.com" not "pop3.gmail.com" as in your code.
  • May 15, 2008, 11:40 PM
    vasavi
    If speciy "pop3.gmail.com" as host

    The error I get is
    "java.net.UnknownHostException"
  • May 16, 2008, 10:59 AM
    Scleros
    Quote:

    Originally Posted by vasavi
    if speciy "pop3.gmail.com" as host...

    Yes, the correct host is "pop.gmail.com". Your original post's code had "pop3.gmail.com".
  • Sep 19, 2008, 02:54 AM
    willtrytoanswer
    Just change this line

    Prop.put("mail.store.protocol", "pop3s");
  • Nov 21, 2011, 03:00 AM
    eee32
    I think the error is due to invalid username and password.

  • All times are GMT -7. The time now is 01:50 AM.