Di sini saya akan membagi untuk para (future/calon) JAVA developer yang ingin membangun java client untuk membaca email (google, yahoo, perusahaan).

Untuk code ini di butuhkan:
- mail.jar

import java.io.IOException;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;

public class Reader {

    public static void main(String[] args) {
        readEmails(true);
    }


    private static void readEmails(boolean isImap) {
        Properties connectionProperties = new Properties();
        // Create the session
        Session session = Session.getDefaultInstance(connectionProperties, null);
        Store store = null;
        try {
            System.out.print("Connecting to the IMAP server...");
            String storeName = isImap ? "imaps" : "pop3";
            store = session.getStore(storeName);

            String server = isImap ? "imap.gmail.com" : "pop3.gmail.com";
            store.connect(server, "MY_ACCOUNT@gmail.com", "MY_PASSWORD");

            System.out.println("Connected.");
            Folder inbox = store.getFolder("Inbox");

            inbox.open(Folder.READ_ONLY);

            Message messages[] = inbox.getMessages();

            // Display the messages
            for (Message message : messages) {
                for (Address address : message.getFrom()) {
                    System.out.println("===Starting message===");
                    System.out.println("From:" + address);
                    System.out.println("Subject: " + message.getSubject());
                    if (message.isMimeType("multipart/*")) {
                        Multipart mp = (Multipart) message.getContent();
                        System.out.println("Multipart");
                        prosesMultiPartMessage(mp);
                    } else {
                        System.out.println(message.getContent());
                    }
                }

                System.out.println("===End message==");

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                store.close();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }

    private static void prosesMultiPartMessage(Multipart multipart)
            throws MessagingException {
        for (int j = 0; j < multipart.getCount(); j++) {

            BodyPart bodyPart = multipart.getBodyPart(j);

            String disposition = bodyPart.getDisposition();

            if (disposition != null
                    && (disposition.equalsIgnoreCase("ATTACHMENT"))) {
                System.out.println("Mail have some attachment");

                DataHandler handler = bodyPart.getDataHandler();
                System.out.println("file name : " + handler.getName());
            } else {
                // content = getText(bodyPart); // the changed code
                try {
                    System.out.println(bodyPart.getContent().toString());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}
 


Comments




Leave a Reply