public static void getMailboxInfo(String mail, String mailHost)
throws javax.mail.NoSuchProviderException, MessagingException, IOException, GeneralSecurityException {
Config conf = nsit.Config.getInstance();
String mpUser = "";
String mpPassword = "";
// setup mail server
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
// set system properties
Properties mailProps = System.getProperties();
mailProps.put("mail.imaps.ssl.socketFactory", sf);
mailProps.put("mail.store.protocol", "imaps");
mailProps.put("mail.imaps.host", mailHost);
mailProps.put("mail.imaps.port", "993");
// get session
//Session session = Session.getDefaultInstance(mailProps);
mailProps.setProperty("mail.imaps.sasl.authorizationid", mail);
Session session = Session.getInstance(mailProps, new SASLMasqueradeAuthenticator(mpUser, mpPassword));
session.setDebug(false);
Store srcStore;
srcStore = session.getStore();
srcStore.connect();
Folder src = srcStore.getDefaultFolder();
//log.info("src.getName() " + src.getName());
//log.info("src.getType() " + src.getType());
//log.info("src.HOLDS_FOLDERS " + src.HOLDS_FOLDERS);
if ((src.getType() & Folder.HOLDS_FOLDERS) != 0) {
Folder[] subfolders = src.list();
log.info("subfolders.length " + subfolders.length);
for (int i = 0; i < subfolders.length; i++) {
long msgs_size = 0;
if (subfolders[i].getMessageCount() != 0) {
log.info("subfolders[i].getMessageCount() " + subfolders[i].getMessageCount());
subfolders[i].open(Folder.READ_ONLY);
Message[] messages = subfolders[i].getMessages();
for (int x = 0; x < messages.length; x++) {
//log.info("msg_size " + messages[i].getSize() + " bytes long.");
if (messages[i].getSize() != -1) {
msgs_size += messages[i].getSize();
}
}
log.info("msgs_size " + (msgs_size));
log.info("msgs_size " + (msgs_size / (1024L * 1024L)));
subfolders[i].close(false);
}
} else {
System.out.println("Not default folder");
}
}
private static class SASLMasqueradeAuthenticator extends Authenticator {
String authcid, authcpass;
public SASLMasqueradeAuthenticator(String adminusername, String adminpassword) {
authcid = adminusername;
authcpass = adminpassword;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(authcid, authcpass);
}
}
Monday, January 11, 2010
Connect to IMAP using JavaMail over SSL
Connect to and get mailbox information from an imaps server using JavaMail. I'm using a custom SASLMasqueradeAuthenticator method, configuring JavaMail's Socket Fetcher class to use "MailSSLSocketFactory".
Subscribe to:
Post Comments (Atom)


0 comments:
Post a Comment