Hacking just for Fun: Get Mails from IMAP with Java
I have the feeling, that i might need this someday :-).
Collecting Mails from an IMAP Server with Java is pretty easy:
package de.javastream.imapcollector; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Properties; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.MimeBodyPart; import javax.swing.JOptionPane; public class App { public static void getMail(String host, String user, String passwd) throws Exception { Session session = Session.getDefaultInstance(new Properties()); Store store = session.getStore("imap"); store.connect(host, user, passwd); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); // the funny part is... you can count all the messages before you download them. Message[] messages = folder.getMessages(); System.out.println("there are "+messages.length+" in your INBOX."); for (int i = 0; i <; messages.length; i++) { Message m = messages[i]; System.out.println("Nachricht: " + i); System.out.println("From: " + m.getFrom()[0]); System.out.println("Subject: " + m.getSubject()); // some Messages are multipart messages (e.g. text with an attachement) if (m.getContentType().equals("multipart")) { Multipart mp = (Multipart) m.getContent(); for (int j = 0; j <; mp.getCount(); j++) { Part part = mp.getBodyPart(j); String disposition = part.getDisposition(); if (disposition == null) { MimeBodyPart mimePart = (MimeBodyPart) part; if (mimePart.isMimeType("text/plain")) { BufferedReader in = new BufferedReader( new InputStreamReader(mimePart.getInputStream())); for (String line; (line = in.readLine()) != null;) { System.out.println(line); } } } } } else { System.out.println(m.getContent()); } } System.out.println("done :-)"); folder.close(false); store.close(); } public static void main(String[] args) throws Exception { // show some simple Dialogs to get server, username and password String server = JOptionPane.showInputDialog("enter your Mail Server e.g. mail.example.com"); String user = JOptionPane.showInputDialog("enter your login e.g. user"); String password = JOptionPane.showInputDialog("enter your mail password"); getMail(server, user, password); } }
Becource you will need the java mail lib as a dependency i just created a small maven project to add them.
Just unzip it and run
mvn exec:java
Download Maven Project for ImapCollector
Update:
A Colleague of mine asks for the imports of that Code. I just added them to the sources. You have to include the javamail lib from Sun Oracle as a dependency to run the code.