| sitelink1 | http://www.nikhilnishchal.com/tech-blogs/-/blogs/read-mail |
|---|---|
| sitelink2 | |
| sitelink3 | |
| sitelink4 | |
| sitelink5 | |
| sitelink6 |
To read emails from any mailbox generally required many times.
By following code using POP3 we can read mails of any mailbox.
Following codes describes to read mails from gmail(you need to provide proper user and password).
To, read mails from gmail/email client we also need to update its setting to enable pop. In gmail from mail setting we can enable it.
package com.popmails;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
/**
*
* @author nikhil.nishchal
*
*/
public class GetPOPMails {
private static final String MAIL_POP_HOST = "pop.gmail.com";
private static final String MAIL_STORE_TYPE = "pop3";
private static final String POP_USER = "xxxxxx@gmail.com";
private static final String POP_PASSWORD = "xxxxx";
private static final String POP_PORT = "995";
public static void getMails(String user,String password) {
try {
// create properties field
Properties properties = new Properties();
properties.put("mail.pop3.host", MAIL_POP_HOST);
properties.put("mail.pop3.port", POP_PORT);
properties.put("mail.pop3.starttls.enable", "true");
properties.put("mail.pop3.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
//Session emailSession = Session.getDefaultInstance(properties);
Session emailSession = Session.getDefaultInstance(properties , new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication( POP_USER , POP_PASSWORD);
}
});
// create the POP3 store object and connect with the pop server
Store store = emailSession.getStore(MAIL_STORE_TYPE);
store.connect(MAIL_POP_HOST, user, password);
// create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0, n = messages.length; i < n; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Body: " + message.getContent().toString());
}
// close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
getMails(POP_USER, POP_PASSWORD);
}
}
For this, we need Java mail API.
Java mail API we can download from http://www.oracle.com/technetwork/java/javamail/index-138643.html
* javax.mail.AuthenticationFailedException: [AUTH] Username and password not accepted. 오류 발생시 보안 수준이 낮은 앱에서 계정에 액세스하도록 허용해야 한다
-> https://myaccount.google.com/lesssecureapps
