Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

import java.util.

Properties;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;

/**
* This program demonstrates how to get e-mail messages from a POP3/IMAP server
*
* @author www.codejava.net
*
*/
public class EmailReceiver {

/**
* Returns a Properties object which is configured for a POP3/IMAP server
*
* @param protocol either "imap" or "pop3"
* @param host
* @param port
* @return a Properties object
*/
private Properties getServerProperties(String protocol, String host,
String port) {
Properties properties = new Properties();

// server setting
properties.put(String.format("mail.%s.host", protocol), host);
properties.put(String.format("mail.%s.port", protocol), port);

// SSL setting
properties.setProperty(
String.format("mail.%s.socketFactory.class", protocol),
"javax.net.ssl.SSLSocketFactory");
properties.setProperty(
String.format("mail.%s.socketFactory.fallback", protocol),
"false");
properties.setProperty(
String.format("mail.%s.socketFactory.port", protocol),
String.valueOf(port));

return properties;
}

/**
* Downloads new messages and fetches details for each message.
* @param protocol
* @param host
* @param port
* @param userName
* @param password
*/
public void downloadEmails(String protocol, String host, String port,
String userName, String password) {
Properties properties = getServerProperties(protocol, host, port);
Session session = Session.getDefaultInstance(properties);

try {
// connects to the message store
Store store = session.getStore(protocol);
store.connect(userName, password);

// opens the inbox folder


Folder folderInbox = store.getFolder("INBOX");
folderInbox.open(Folder.READ_ONLY);

// fetches new messages from server


Message[] messages = folderInbox.getMessages();

for (int i = 0; i < messages.length; i++) {


Message msg = messages[i];
Address[] fromAddress = msg.getFrom();
String from = fromAddress[0].toString();
String subject = msg.getSubject();
String toList = parseAddresses(msg
.getRecipients(RecipientType.TO));
String ccList = parseAddresses(msg
.getRecipients(RecipientType.CC));
String sentDate = msg.getSentDate().toString();

String contentType = msg.getContentType();


String messageContent = "";

if (contentType.contains("text/plain")
|| contentType.contains("text/html")) {
try {
Object content = msg.getContent();
if (content != null) {
messageContent = content.toString();
}
} catch (Exception ex) {
messageContent = "[Error downloading content]";
ex.printStackTrace();
}
}

// print out details of each message


System.out.println("Message #" + (i + 1) + ":");
System.out.println("\t From: " + from);
System.out.println("\t To: " + toList);
System.out.println("\t CC: " + ccList);
System.out.println("\t Subject: " + subject);
System.out.println("\t Sent Date: " + sentDate);
System.out.println("\t

You might also like