/* * Created on Aug 11, 2005 */ package cyrille.mail; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; import javax.mail.Address; import javax.mail.AuthenticationFailedException; import javax.mail.FetchProfile; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.FetchProfile.Item; import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class ImapTest extends TestCase { private static final Log log = LogFactory.getLog(ImapTest.class); public static void main(String[] args) { junit.textui.TestRunner.run(ImapTest.class); } public void test() throws Exception { InputStream in = getClass().getResourceAsStream("emails.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); // 33617068928@myorange.dk Authentication Failure String password = "W4N40RaNG3"; String msisdn; while ((msisdn = reader.readLine()) != null) { msisdn = msisdn.trim(); if (msisdn.startsWith("#") || msisdn.length() == 0) { log.debug("skip comment " + msisdn); } else { String user = msisdn; // "33617068928@myorange.dk"; try { test(user, password); } catch (AuthenticationFailedException afe) { log.error("Authentication failed with user=" + user + ", password=" + password); } catch (Exception e) { log.error("Exception with user=" + user + ", password=" + password + " : " + e.toString(), e); } } } } public void test(String user, String password) throws MessagingException { String hostname = "localhost"; int port = 3344; String protocol = "imap"; Properties props = new Properties(); props.setProperty("mail.store.protocol", "imap"); props.setProperty("mail.imap.host", hostname); props.setProperty("mail.imap.port", String.valueOf(port)); Session s = Session.getInstance(props, null); Store store = s.getStore(protocol); log.debug("Connect " + user + " at" + hostname + ":" + port + " ..."); store.connect(hostname, port, user, password); Folder defaultFolder = store.getDefaultFolder(); Folder[] folders = new Folder[] { defaultFolder.getFolder("INBOX") }; for (Folder folder : folders) { dumpFolder(folder, ""); } } public void dumpFolder(Folder folder, String offset) throws MessagingException { log.debug(offset + "" + folder.getName() + "(" + folder.getMessageCount() + ") /"); // SUB FOLDERS Folder[] folders = folder.list("%"); for (Folder subFolder : folders) { dumpFolder(subFolder, "\t" + offset); } // EMAILS folder.open(Folder.READ_WRITE); Message[] messages = folder.getMessages(); FetchProfile fetchProfile = new FetchProfile(); fetchProfile.add(Item.ENVELOPE); fetchProfile.add(Item.FLAGS); folder.fetch(messages, fetchProfile); for (Message message : messages) { String line = offset + "\t\"" + message.getSubject() + "\"\t"; Address[] addresses = message.getFrom(); for (Address address : addresses) { line += address.toString() + " "; } log.debug(line); } folder.close(false); } }