DEV Community

Edilson Belo
Edilson Belo

Posted on

Listener javaMail - Gmail

Objetivo

Após muitas buscas com certas dificuldades em encontrar bons exemplos de projeto para leitura de e-mails automatizadas com Listerner, decidi criar este post, o objetivo demonstrar uma das possibilidades de desenvolvimento de um Listener conectado a um provedor de e-mails (Gmail).

Dev

Este projeto exemplo está disponível no Github mail-read aberto para contribuições e evoluções.

JavaMail

O projeto utiliza as funcionalidades das apis de integracao-web e JavaMail via SprintBoot.

principais dependencias do app
A estrutura do app esta simplificada e não foi aplicado nenhum patterns especifico, a única organização realizada são as opções de execução via controller, ou Listener, sendo este segundo parecer mais útil e interessante, uma vez que assim existe a possibilidade de conectar ao provedor de email, e automaticamente após check-in de uma nova mensagem/e-mail a rotina e disparada.
Outras funções auxiliares de controle de execução podem ser utilizadas para padronizar horários da rotina, para que assim recursos de maquina possam ser economizados, se assim necessário.

estrutura do app

MailboxServiceImpl

Os principais serviços/métodos de conexão e persistência no provedor estão agrupados aqui, incluindo configuração, criação e ativação de listener na folder "INBOX" que representa a “caixa de entrada” padrão de qualquer e-mail.
As únicas configurações que se fazem necessário estão no arquivo de application.properties conforme abaixo:

Configuracao necessaria no app java

Provedor

Os provedores de e-mail, podem requisitar recursos de segurança para conexão segura com a caixa de email, sendo assim, é necessário seguir as diretrizes impostas para devida conexão. Configurações do Gmail: Imap

Ainda sobre Segurança

Recentemente o Google tem realizado acoes para ainda mais assegurar o acesso a conta via qualquer aplicativo de terceiros, vide novas mudanças, talvez seja necessário habilitar o uso de “apps menos seguros” para que o listener proposto seja devidamente bem sucedido
habilitar apps menos seguros

configuracao Google
Após clonar o projeto e configurar conforme desejado, na execução inicial, o seguinte retorno deve aparecer confirmado a conexão e adição do listener na pasta/folder especificada:

executando aplicacao

handleMessage

Agora toda nova mensagem ao chegar nesta pasta será monitorada em "real time” e disparado a rotina handleMessage realizando alguma ação com o mensagem/e-mail ou com conteúdo disponível na mesma.
notificacao ao chegar um novo e-mail
Espero ter ajudado de alguma forma :)
Fico a disposição para trocar ideia se necessário ;)
Abs.,

Top comments (0)