Executando verificação de segurança...
3

Disparo e recebimento de emails em localhost (ambiente de desenvolvimento)

.
.
Resumo: neste tópico você conhecerá um pouco mais sobre mim, sobre a companhia em que trabalho e também como configurar seu ambiente de desenvolvimento para disparar e receber e-mails localmente.
.
.
.
Olá, pessoal.

Esta é a minha primeira postagem no TabNews, antes de seguir com o conteúdo do post, gostaria de me apresentar rapidamente e dizer que é um prazer fazer parte desta comunidade e poder contribuir para a construção de um espaço "seguro" e limpo com conteúdo focado para profissionais de TI.

Me chamo Lucas Baltazar, estou no mercado de TI há mais de 1 década, atuo como CTO no grupo Stone Co. Com certeza você já viu por aí uma máquina de cartão verdinha, não é mesmo? (focada em soluções financeiras, + de 15 mil colaboradores), IPO em 2018 fazendo estreia na NASDAQ. Adquiriu a Linx S/A em 2020, que possui + de 5 mil colaboradores, uma das maiores empresas brasileiras com um leque gigantesco de soluções em software para o mercado de varejo do Brasil.

Possuo uma veia técnica muito forte, embora nos últimos anos eu tenha me dedicado mais à gestão e businness, ao longo do tempo, quero compartilhar com todos vocês um pouco da minha experiência, tanto hard skills quanto soft skills. Pra finalizar essa apresentação pessoal e da companhia em que eu atuo, gostaria de compartilhar o propósito da Stone Co. "Tornar mais justa a oferta de serviços financeiros para os lojistas brasileiros, apoiando cada um deles em sua jornada empreendedora." Sabe como vamos fazer isso? Atraindo e retendo talentos, portanto, deixo aqui meu LinkedIn para eventuais contatos de pessoas que entenderem que seus propósitos pessoais têm sinergia com o propósito da Stone Co.

Vamos logo ao tema da postagem...

Depois de ler este post, enviar e receber emails no ambiente de desenvolvimento (localhost) não será mais uma dor para você.

Gostaria de apresentar a solução Mailcatcher. A solução provê um servidor SMTP local e uma interface Web para visualizar os emails recebidos.

Mailcatcher é uma gem, que é uma espécie de "plugin" feito na linguagem Ruby, isso quer dizer que para que as coisas funcionem, você deverá instalar a linguagem Ruby em sua máquina. Vou dar o passo-a-passo exemplificando para o sistema operacional Ubuntu LTS 18.04, contudo, as coisas apresentadas aqui são compatíveis com os principais sistema operacionais do mercado (Windows, MacOS e Linux).

O Primeiro passo é instalar o RVM (gerenciador de versões para a linguagem Ruby, assim como o NVM é um gerenciador para o Node), ele permitirá instalar e alternar entre diferentes versões da linguagem Ruby no seu sistema operacional. É possível instalar Ruby direto na sua máquina, sem usar um gerenciador de versões, mas eu não recomendo isso.

  1. Para instalar o RVM é necessário instalar o GPG (usado para verificar a autenticidade do RVM usando chaves PGP). Então abra o terminal e:

$ sudo apt install gnupg

  1. Importe para o seu ambiente as chaves PGP do RVM.

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

  1. Faça a instalação do RVM

$ sudo apt-get update && apt-get install curl && curl -sSL https://get.rvm.io | bash -s stable

  1. Adicione seu usuário ao grupo de usuários do RVM

$ sudo usermod -a -G rvm `whoami`

  1. Nesta etapa, recomendo fechar o terminal e abrir novamente.

  2. Tenha certeza de que tudo ocorreu como esperado durante a instalação do RVM, vc pode usar o seguinte comando para testar isso:

$ rvm -v

A saída deverá ser parecida com isso: rvm 1.29.9 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

  1. Instale a linguagem ruby usando RVM

$ rvm install ruby-2.7.0

  1. Defina a versão 2.7.0 da linguagem ruby como versão default

$ rvm --default use ruby-2.7.0

  1. Instale o Mailcatcher

$ gem install mailcatcher

  1. Execute o Mailcatcher

$ mailcatcher -f

Agora você tem um servidor SMTP rodando em localhost:1025, você pode configurar seus projetos backend para fazer disparos de emails localmente por meio desse servidor.

Para visualizar os e-mails recebidos, acesse pelo navegador: http://localhost:1080/ (qualquer e-mail disparado, independente do destinatário, poderá ser visualizado nessa caixa de entrada).

Espero ter contribuído com você, que leu este post, até a próxima.

Lucas Baltazar

Carregando publicação patrocinada...
1
1

Baltazar que honra ter você aqui e seja muito bem vindo!

E que coincidência, nós também usamos o MailCatcher no TabNews e é realmente fantástico! No nosso caso acabamos levantando ele com docker-compose, está implementado nesta parte do arquivo:

https://github.com/filipedeschamps/tabnews.com.br/blob/9ab4433273eab71296a1cd14783a4698fd2749a7/infra/docker-compose.development.yml#L13-L21

  mailcatcher:
    container_name: mailcatcher
    image: sj26/mailcatcher
    expose:
      - 1025
      - 1080
    ports:
      - 1025:1025
      - 1080:1080

Daí não é preciso instalar nenhuma dependência (tirando o Docker).

E ele é usado bastante nos testes automatizados, inclusive foi implementado uma gambiarra para bater na API dele e limpar todos os emails, ou pegar o último email disparado:

https://github.com/filipedeschamps/tabnews.com.br/blob/9ab4433273eab71296a1cd14783a4698fd2749a7/tests/orchestrator.js#L86-L107

Seria muito show se eles lançassem uma versão com uma API REST melhor, de qualquer forma, funciona 100% e eu assino embaixo a recomendação de usar o MailCatcher, é leve, grátis e open source 🤝