Hi
Gostaria de saber se alguém sabe criar um listener no Gmail.
Eu tenho um programa que lê a caixa de entraga do GMail usando a API java mail e baixa todos os e-mail que recebi, porem tenho de fazer isso de tempos em tempos.
Gostaria de ter um listener no gmail que chamasse uma url <servlet> dentro de uma aplicação minha para avisar que chegou um e-mail.
Alguém sabe se isso é possível ?
Desde já muito obrigado.
public static List<SMSMail> readMailbox(){
List<SMSMail> listMailbox = new LinkedList<SMSMail>();
Store store = null;
Folder folder = null;
try{
Properties props = new Properties();
props.put("mail.pop.host", POP_HOST_NAME);
props.put("mail.pop.auth", "true");
props.put("mail.store.protocol", "pop3");
Session session = Session.getDefaultInstance(props, new SMTPAuthenticator());
// Get the store
store = session.getStore();
store.connect(POP_HOST_NAME, AUTH_USER, AUTH_PWD);
// Get folder
folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
logger.info("teste: " + folder.getNewMessageCount() );
// Get directory
Message messages[] = folder.getMessages();
for (int x = 0; x < messages.length; x++) {
Message message = messages[x];
Multipart multipart = (Multipart) message.getContent();
BodyPart bodyPart = multipart.getBodyPart(0);
Address to[] = message.getRecipients(Message.RecipientType.TO);
for(int y = 0; y < to.length; y++){
SMSMail smsMail = new SMSMail(
parseAddress(message.getFrom()),
parseAddress(to[y].toString()),
message.getSubject(),
parseMessage(bodyPart.getContent()));
listMailbox.add(smsMail);
}
}
}catch(NoSuchProviderException e){
logger.log(Level.SEVERE, "cannot read e-mail",e);
throw new MailboxException(e);
}catch(MessagingException e){
logger.log(Level.SEVERE, "cannot read e-mail",e);
throw new MailboxException(e);
}catch(IOException e){
logger.log(Level.SEVERE, "cannot read e-mail",e);
throw new MailboxException(e);
}finally{
// Close connection
if(folder != null)
try {
folder.close(true);
} catch (MessagingException e) {
logger.log(Level.WARNING, "cannot close folder from mailbox",e);
throw new MailboxException(e);
}
if(store != null)
try {
store.close();
} catch (MessagingException e) {
logger.log(Level.WARNING, "cannot close store from mailbox",e);
throw new MailboxException(e);
}
}
return listMailbox;
}