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 MainClass { 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); // Get the messages from the server Message[] messages = folder.getMessages(); for (int i = 0; i < messages.length; i++) { // Get the headers 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"); } }