Skip to content

Instantly share code, notes, and snippets.

@peanutwolf
Created May 22, 2015 17:20
Show Gist options
  • Save peanutwolf/e14cdbc857420031a9b7 to your computer and use it in GitHub Desktop.
Save peanutwolf/e14cdbc857420031a9b7 to your computer and use it in GitHub Desktop.
import java.util.Properties;
import javax.mail.*;
import javax.mail.event.MessageCountEvent;
import javax.mail.event.MessageCountListener;
import com.sun.mail.imap.*;
public abstract class MailProtoPort {
protected Store store;
protected Folder folder;
abstract protected void initConnectService();
abstract public void initFolderWithListener(String folderName);
abstract public void initFolder(String folderName);
abstract public int getUnreadMsgCount();
}
class ImapMailProtoPort extends MailProtoPort{
private String host,email, pass, port;
public ImapMailProtoPort(String host, String email, String pass, String port){
this.host = host;
this.email = email;
this.pass = pass;
this.port = port;
this.initConnectService();
}
@Override
protected void initConnectService() {
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imap");
props.setProperty("mail.imap.port", this.port);
if(this.port.equals("993"))
props.setProperty("mail.imap.ssl.enable", "true");
Session session = Session.getInstance(props, null);
try {
super.store = session.getStore();
this.store.connect(this.host, this.email, this.pass);
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
@Override
public void initFolderWithListener(String folderName) {
if(!store.isConnected())
return;
try {
this.folder =((IMAPStore)store).getFolder(folderName);
this.folder.open(Folder.READ_ONLY);
System.out.println("UnreadMsgs = " + ((IMAPFolder)this.folder).getUnreadMessageCount());
folder.addMessageCountListener(new MessageCountListener() {
@Override
public void messagesRemoved(MessageCountEvent evt) {
try {
System.out.println(((IMAPFolder)folder).getNewMessageCount() + " " + ((IMAPFolder)folder).getUnreadMessageCount());
} catch (MessagingException e) {
e.printStackTrace();
}
}
@Override
public void messagesAdded(MessageCountEvent evt) {
try {
System.out.println(((IMAPFolder)folder).getNewMessageCount() + " " + ((IMAPFolder)folder).getUnreadMessageCount());
} catch (MessagingException e) {
e.printStackTrace();
}
}
});
} catch (MessagingException e) {
e.printStackTrace();
}
}
public void initFolder(String folderName){
if(!store.isConnected())
return;
try {
this.folder =((IMAPStore)store).getFolder(folderName);
this.folder.open(Folder.READ_ONLY);
} catch (MessagingException e) {
e.printStackTrace();
}
}
public int getUnreadMsgCount(){
if(!store.isConnected())
return -1;
try {
((IMAPFolder)this.folder).getMessageCount();
return ((IMAPFolder)this.folder).getUnreadMessageCount();
} catch (MessagingException e) {
e.printStackTrace();
return -1;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment