Snippet: Simple One-Minute IMAP Client

April 3rd, 2010 by

Building a simple IMAP Client that displays the subject of the messages in the “inbox” Folder using Maven (I just like Maven).

 

Project Setup / Maven

  1. Create a new Maven project
    mvn archetype:create -DgroupId=com.hascode.imap -DartifactId=imap-client
  2. Edit your pom.xml and add some dependencies
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.hascode.imap</groupId>
     <artifactId>imap-client</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <dependencies>
     <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.8.1</version>
     </dependency>
     <dependency>
     <groupId>javax.mail</groupId>
     <artifactId>mail</artifactId>
     <version>1.4.2</version>
     </dependency>
     </dependencies>
    </project>

Creating the E-Mail Client

  1. Create a package .. something like com.hascode.imap.client ;)
  2. Create a simple mail client using javax.mail in a class named ImapClient
    package com.hascode.imap.client;
     
    import javax.mail.Folder;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.Store;
     
    public class ImapClient {
    private Session session = null;
    private Store store = null;
    private String host = null;
    private String userName = null;
    private String password = null;
     
    public ImapClient(String host, String userName, String password){
    this.host = host;
    this.userName = userName;
    this.password = password;
    }
     
    public boolean getMail() throws MessagingException {
    session = Session.getDefaultInstance(System.getProperties(),null);
    //        session.setDebug(true);
    System.out.println("get store..");
    store = session.getStore("imaps");
    System.out.println("connect..");
    store.connect(this.host, this.userName, this.password);
    System.out.println("get default folder ..");
    Folder folder = store.getDefaultFolder();
    folder = folder.getFolder("inbox");
    folder.open(Folder.READ_ONLY);
    System.out.println("reading messages..");
    Message[] messages = folder.getMessages();
    for(Message m:messages){
    System.out.println(m.getSubject());
    }
    return false;
    }
    }
  3. Test the result in an unit test or a test class like this one
    package com.hascode.imap.client;
     
    import javax.mail.MessagingException;
     
    public class Main {
     
    public static void main(String[] args) {
    ImapClient c = new ImapClient("<yourhostname>", "<yourusername>","<yourpassword>");
    try {
    c.getMail();
    } catch (MessagingException e) {
    e.printStackTrace();
    }
    }
     
    }

Debugging an E-Mail Session

If something goes wrong – use the debugging feature in the session object:

session.setDebug(true);

Creating an E-Mail Server in Java

If you’re interested in creating an e-mail server in java for testing please feel free to take a look at my tutorial: “Integration Testing IMAP, SMTP and POP3 with GreenMail“.

Resources

Tags: , , ,

Leave a Reply

Please note, that no personal information like your IP address is stored and you're not required to enter you real name.

Comments must be approved before they are published, so please be patient after having posted a comment - it might take a short while.

Please leave these two fields as-is:
Search
Tags
Categories