import java.util.*; import javax.mail.*; import javax.mail.internet.*; import java.io.*; public class MailReceiverTerminal { public static void main(String[] args) { String host = args[0]; //"imap.gmail.com"; String port = args[1]; //"993"; String username = args[2]; //"pierre.wijkman@gmail.com"; String password = args[3]; //"xxxxxx"; String numberOfMessages = args[4]; //"10"; try { Properties props = new Properties(); props.setProperty("mail.store.protocol","imap"); props.setProperty("mail.imap.host", host); props.setProperty("mail.imap.port", port); props.setProperty("mail.imap.ssl.enable","true"); //props.setProperty("mail.debug", "true"); Session session = Session.getDefaultInstance(props, null); //session.setDebug(true); // Get the store Store store = session.getStore("imap"); store.connect(host, Integer.parseInt(port), username, password); // Get hold of the default folder Folder folder = store.getDefaultFolder(); if (folder == null) throw new Exception("No default folder"); // ... and its INBOX folder = folder.getFolder("INBOX"); if (folder == null) throw new Exception("No POP3 INBOX"); // -- Open the folder for read only -- folder.open(Folder.READ_ONLY); // Get directory Message message[] = folder.getMessages(); //for (int i = 0, n = message.length; i < n; i++) { for (int i = 0, n = Integer.parseInt(numberOfMessages); i < n; i++) { printMessage(message[i]); //Thread.sleep(1000); } folder.close(false); store.close(); } catch(Exception e) {} } public static void printMessage(Message message) { try { // Get the header information String from = ((InternetAddress)message.getFrom()[0]).getPersonal(); if (from == null) from = ((InternetAddress)message.getFrom()[0]).getAddress(); System.out.println("FROM: " + from + "\n"); String subject = message.getSubject(); System.out.println("SUBJECT: " + subject + "\n"); // -- Get the message part (i.e. the message itself) -- Part messagePart = message; Object content = messagePart.getContent(); // -- or its first body part if it is a multipart message -- if (content instanceof Multipart) { messagePart=((Multipart)content).getBodyPart(0); System.out.println("" + "\n"); } // -- Get the content type -- String contentType = messagePart.getContentType(); // -- If the content is plain text, we can print it -- // messages.append("CONTENT TYPE: " + contentType + "\n"); if (contentType.startsWith("text/plain") || contentType.startsWith("text/html") || contentType.startsWith("TEXT/PLAIN") || contentType.startsWith("TEXT/HTML")) { InputStream is = messagePart.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String thisLine = reader.readLine(); while (thisLine != null) { System.out.println(thisLine + "\n"); thisLine = reader.readLine(); } } System.out.println("##############################" + "\n"); } catch (Exception ex) { ex.printStackTrace(); } } }