<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Edilson Belo</title>
    <description>The latest articles on DEV Community by Edilson Belo (@belo355).</description>
    <link>https://dev.to/belo355</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F750979%2F6e49dd8a-5a99-4eee-9361-af06003c1db2.jpeg</url>
      <title>DEV Community: Edilson Belo</title>
      <link>https://dev.to/belo355</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/belo355"/>
    <language>en</language>
    <item>
      <title>Listener javaMail - Gmail</title>
      <dc:creator>Edilson Belo</dc:creator>
      <pubDate>Tue, 05 Apr 2022 03:06:04 +0000</pubDate>
      <link>https://dev.to/belo355/listener-javamail-gmail-2ahp</link>
      <guid>https://dev.to/belo355/listener-javamail-gmail-2ahp</guid>
      <description>&lt;h2&gt;
  
  
  Objetivo
&lt;/h2&gt;

&lt;p&gt;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).&lt;/p&gt;

&lt;h2&gt;
  
  
  Dev
&lt;/h2&gt;

&lt;p&gt;Este projeto exemplo está disponível no Github &lt;a href="https://github.com/belo355/mail-read"&gt;mail-read&lt;/a&gt; aberto para contribuições e evoluções.  &lt;/p&gt;

&lt;h2&gt;
  
  
  JavaMail
&lt;/h2&gt;

&lt;p&gt;O projeto utiliza as funcionalidades das apis de integracao-web  e JavaMail via SprintBoot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3W0eb7ti--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r9txtmxwq5mq5pfo74gs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3W0eb7ti--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r9txtmxwq5mq5pfo74gs.png" alt="principais dependencias do app" width="880" height="761"&gt;&lt;/a&gt;&lt;br&gt;
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. &lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--80OSgIDK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iu736a9g9p19cbo5lag1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--80OSgIDK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iu736a9g9p19cbo5lag1.png" alt="estrutura do app" width="716" height="764"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  MailboxServiceImpl
&lt;/h2&gt;

&lt;p&gt;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.&lt;br&gt;
As únicas configurações que se fazem necessário estão no arquivo de application.properties conforme abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--thMlD8-s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p4gv5em87d5h4lx15e4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--thMlD8-s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p4gv5em87d5h4lx15e4r.png" alt="Configuracao necessaria no app java" width="880" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Provedor
&lt;/h2&gt;

&lt;p&gt;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: &lt;a href="https://support.google.com/mail/answer/7126229?hl=pt-BR#zippy=%2Cetapa-verificar-se-o-imap-est%C3%A1-ativado"&gt;Imap&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ainda sobre Segurança
&lt;/h2&gt;

&lt;p&gt;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&lt;br&gt;
&lt;a href="https://myaccount.google.com/lesssecureapps"&gt;habilitar apps menos seguros&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CEj4NTN9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1maifdj9jf872d7i2fj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CEj4NTN9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1maifdj9jf872d7i2fj.png" alt="configuracao Google" width="880" height="413"&gt;&lt;/a&gt;&lt;br&gt;
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: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iY7hCKRF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rui0hu6540g1y0uorxqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iY7hCKRF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rui0hu6540g1y0uorxqw.png" alt="executando aplicacao" width="880" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  handleMessage
&lt;/h2&gt;

&lt;p&gt;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. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_weWUO2y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dihlownx4xovjxngv54o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_weWUO2y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dihlownx4xovjxngv54o.png" alt="notificacao ao chegar um novo e-mail" width="880" height="148"&gt;&lt;/a&gt;&lt;br&gt;
Espero ter ajudado de alguma forma :)&lt;br&gt;
Fico a disposição para trocar ideia se necessário ;)&lt;br&gt;
Abs.,&lt;/p&gt;

</description>
      <category>java</category>
      <category>productivity</category>
      <category>gmail</category>
    </item>
  </channel>
</rss>
