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.
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.
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:
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
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:
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.
Espero ter ajudado de alguma forma :)
Fico a disposição para trocar ideia se necessário ;)
Abs.,
Top comments (0)