Written by Philipp on 2012-04-03
Hacking just for Fun: Get Mails from IMAP with Java
Hacking . JavaI 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.
Related
Archives
- August 2025
- November 2023
- February 2023
- January 2023
- April 2020
- January 2018
- December 2017
- May 2017
- February 2016
- September 2015
- December 2014
- August 2014
- June 2014
- March 2014
- February 2014
- September 2013
- August 2013
- July 2013
- November 2012
- October 2012
- September 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- August 2011
- July 2011
- June 2011
- May 2011
- January 2011
- August 2010
- July 2010
- June 2010
- May 2010
- January 2010
- November 2009
- October 2009
- September 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- September 2006
- June 2006
- May 2006
- April 2006
- March 2006
- February 2006
- January 2006
Calendar
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | ||||||
Leave a Reply