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

[PITCH] Criei um SMTP Server para desenvolvimento

Fala, galera! 👋

Muitas vezes desenvolvo aplicações que necessitam de um envio de email, seja para validar um email no cadastro, ou então para avisar o usuário que houve um acesso a conta dele.

Porém sempre durante o desenvolvimento, preciso criar um projeto no mailtrap, e ficar dependente dos limites de emails de teste.

Pensando em algo para facilitar minha vida, decidi criar um servidor SMTP que rode em localhost e que me mostre os emails que enviei do meu projeto em desenvolvimento. Então criei o devmail-server. Agora posso simular vários cadastros de usuários com emails diferentes e os emails chegarão todos no mesmo lugar, facilitando a visualização.

Se você também tem ou já teve um problema do tipo, testa lá e me conta aqui oque achou.

Feedbacks são sempre muito bem-vindos!

Github: https://github.com/gabrielalves262/devmail-server
NPM: https://www.npmjs.com/package/devmail-server

Instalação

npm install -g devmail-server

Iniciar

npx devmail-server

Opções

  • --smtp-host: Porta do servidor SMTP. (default: '0.0.0.0')
  • --smtp-port: Host do servidor SMTP. (default: 587)
  • --host, -h: Porta do servidor Web. (default: '0.0.0.0')
  • --port, -p: Host do servidor Web. (default: 3000)

Exemplo:

npx devmail-server --smtp-host "127.0.0.1" --smtp-port 2525 -p 8080

Exemplo utilizando nodemailer

import { createTransport } from 'nodemailer'

const main = async () => {
  const mail = createTransport({
    host: 'localhost',
    port: 587,
  })

  await mail.sendMail({
    from: { name: 'ACME', address: '[email protected]' },
    to: {name: "John Doe", address: '[email protected]'},
    subject: 'Novo Login',
    html: `<p>Olá! Foi efetuado um novo login na sua conta.</p>`,
    attachments: [
      {
        filename: 'file.txt',
        path: './file.txt'
      },
      {
        filename: 'test.zip',
        path: './test.zip'
      },
    ]
  })
}

main()
  .then(() => console.log('done'))
  .catch((err) => console.error(err))
Carregando publicação patrocinada...
6

Muito legal a sua solução amigo!

Mas acho que vale a pena dar uma olhada no Mailpit. Uma solução de servidor smpt para dev com UI e tudo.

O que eu mais gosto dela é que é tudo local e em Docker!

1
2

Meus 2 cents:

Tai uma aplicacao interessante e um tanto fora da caixa.

Aqui na empresa nunca iriamos pensar neste tipo de app, pois temos nossos proprios servidores email (postfix+dovecot) com multiplos dominios para teste.

Mas para um dev solo ou mesmo uma empresa sem tanta infra (colocar um servidor SMTP so para testes e homologacao da uma certa mao de obra) - eh uma ideia bem legal.

Analisando agora, tavez seja interessante montar um docker com toda esta infra pronta (postfix/postfixadmin/dovecot/amavis/mysql/dkim/dnsmasq) para este tipo de situacao.
(esquece, nao faz sentido - tem varias opcoes)

Parabens pela iniciativa - vou forkar !

PS: Depois que escrevi este post, dei uma pesquisada e achei este "smtp para dev" (em .net, mas enfim):

Outros servicos para teste online de email:

0