Listener GMail

2 respostas
R

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&lt;SMSMail&gt; readMailbox(){
        List&lt;SMSMail&gt; listMailbox = new LinkedList&lt;SMSMail&gt;();
        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 &lt; 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 &lt; 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;
    }

2 Respostas

Adriano_Almeida

Oi Ronildo, nunca ouvi falar de tal funcionalidade no gmail. Pq nao faz uma thread rodando de tempos em tempos (3 em 3 minutos, por exemplo) q se conecta e descobre se tem email ou nao?

M

Também não sei se é possível usar um listener via JavaMail. Provavelmente terá que fazer desse jeito mesmo: a cada N segundos, verifica a caixa de entrada.

Criado 30 de janeiro de 2010
Ultima resposta 31 de jan. de 2010
Respostas 2
Participantes 3