I have a program that get/read emails from a server using POP3.
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;
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);
String filename = "c:/temp/" + subject;
saveParts(msg.getContent(), filename);
msg.setFlag(Flags.Flag.SEEN,true);
}
}
finally {
if (folder != null) { folder.close(true); }
if (store != null) { store.close(); }
}
}