import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
public class Main {
public static void main(String[] args) throws Exception {
URLName server = new URLName("protocol://username@host/foldername");
Session session = Session.getDefaultInstance(new Properties(), new MailAuthenticator());
Folder folder = session.getFolder(server);
if (folder == null) {
System.out.println("Folder " + server.getFile() + " not found.");
System.exit(1);
}
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
for (int i = 0; i < messages.length; i++) {
System.out.println("From: " + InternetAddress.toString(messages[i].getFrom()));
System.out.println("Reply-to: " + InternetAddress.toString(messages[i].getReplyTo()));
System.out.println("To: " + InternetAddress.toString(messages[i].getRecipients(Message.RecipientType.TO)));
System.out.println("Cc: " + InternetAddress.toString(messages[i].getRecipients(Message.RecipientType.CC)));
System.out.println("Bcc: " + InternetAddress.toString(messages[i].getRecipients(Message.RecipientType.BCC)));
System.out.println("Subject: " + messages[i].getSubject());
System.out.println("Sent: " + messages[i].getSentDate());
System.out.println("Received: " + messages[i].getReceivedDate());
if (messages[i].isSet(Flags.Flag.DELETED)) {
System.out.println("Deleted");
}
if (messages[i].isSet(Flags.Flag.ANSWERED)) {
System.out.println("Answered");
}
if (messages[i].isSet(Flags.Flag.DRAFT)) {
System.out.println("Draft");
}
if (messages[i].isSet(Flags.Flag.FLAGGED)) {
System.out.println("Marked");
}
if (messages[i].isSet(Flags.Flag.RECENT)) {
System.out.println("Recent");
}
if (messages[i].isSet(Flags.Flag.SEEN)) {
System.out.println("Read");
}
if (messages[i].isSet(Flags.Flag.USER)) {
// We don't know what the user flags might be in advance
// so they're returned as an array of strings
String[] userFlags = messages[i].getFlags().getUserFlags();
for (int j = 0; j < userFlags.length; j++) {
System.out.println("User flag: " + userFlags[j]);
}
}
}
folder.close(false);
}
}
class MailAuthenticator extends Authenticator {
public MailAuthenticator() {
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username", "password");
}
}