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.