Click here to Skip to main content
15,888,527 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have a program that get/read emails from a server using POP3.

Java
public static ArrayList<MessageModel> GetMessage(String host, String storeType, String username, String password, String foldername) {
    ArrayList<MessageModel> list = new ArrayList<>();

    Properties properties = new Properties();
    properties.put("mail.pop3.host", host);
    Session session = Session.getDefaultInstance(properties);

    try {
        POP3Store store = (POP3Store) session.getStore(storeType);
        store.connect(username, password);

        Folder folder = store.getFolder(foldername);
        folder.open(Folder.READ_WRITE);
        Message[] messages = folder.getMessages();
        for(Message msg: messages) {
            MessageModel model = new MessageModel();
            Enumeration headers = msg.getAllHeaders();
            while (headers.hasMoreElements()) {
                Header h = (Header) headers.nextElement();
                if(h.getName().toUpperCase().contains("MESSAGE-ID")) model.setId(h.getValue());
            }
            model.setSubject(msg.getSubject());
            model.setContent(msg.getContent());
            for(Address _from: msg.getFrom())
                model.addFrom(_from.toString());
            try {
                for(Address _to: msg.getRecipients(Message.RecipientType.TO))
                    model.addTo(_to.toString());
                if(msg.getRecipients(Message.RecipientType.CC) != null) {
                    for(Address _Cc: msg.getRecipients(Message.RecipientType.CC))
                        model.addCc(_Cc.toString());
                }
            } catch (MessagingException ex) {
                Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);
            }
            msg.setFlag(Flags.Flag.SEEN, true);
            list.add(model);
        }
        folder.close(true);
        store.close();
    } catch (MessagingException | IOException ex) {
        Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);
    }
    return list;
}


On net the msg.setFlag(Flags.Flag.SEEN, true); is not working because I'm not using IMAP protocol. But when I did, I cannot connect to the mail server.
This is the error
Exception in thread "main" javax.mail.MessagingException: Network is unreachable: connect;

Java
public static void doit() throws MessagingException, IOException {
    Folder folder = null;
    Store store = null;
    try {
      Properties props = System.getProperties();
      props.setProperty("mail.store.protocol", "imaps");

      Session session = Session.getDefaultInstance(props, null);
      store = session.getStore("imaps");
      store.connect("mail.com.ph",",myemail@mail.com.ph", "password");
      folder = store.getFolder("Inbox");
      folder.open(Folder.READ_WRITE);
      Message messages[] = folder.getMessages();
      System.out.println("No of Messages : " + folder.getMessageCount());
      System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount());
      for (int i=0; i < messages.length; ++i) {
        System.out.println("MESSAGE #" + (i + 1) + ":");
        Message msg = messages[i];
        String from = "unknown";
        if (msg.getReplyTo().length >= 1) {
          from = msg.getReplyTo()[0].toString();
        }
        else if (msg.getFrom().length >= 1) {
          from = msg.getFrom()[0].toString();
        }
        String subject = msg.getSubject();
        System.out.println("Saving ... " + subject +" " + from);
        // you may want to replace the spaces with "_"
        // the TEMP directory is used to store the files
        String filename = "c:/temp/" +  subject;
        saveParts(msg.getContent(), filename);
        msg.setFlag(Flags.Flag.SEEN,true);
        // to delete the message
        // msg.setFlag(Flags.Flag.DELETED, true);
      }
    }
    finally {
      if (folder != null) { folder.close(true); }
      if (store != null) { store.close(); }
    }
  }
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900