1.0.1 • Published 6 years ago

nodemailer-http-transport v1.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

O que é

SMTP bloqueado? Use este módulo para fazer um 'tunel' SMTP usando nodemailer e um servidor https usando express :D / SMTP blocked? Use this module to make a SMTP 'tunnel' using nodemailer and express

Para que isso serve?

Este pacote serve para quando o seu host está bloqueando SMTP usando nodemailer, como o Digital Ocean nos primeiros 60 dias de droplet, minha solução foi usar outro servidor para enviar os emails, criei esse transport para o nodelmailer que envia os dados do email para o servidor onde o SMTP não é bloqueado usando HTTPS

Os dois lados

Este pacote funciona em duas partes, o cliente, que é o lado onde o SMTP está sendo bloqueado, e o servidor, que é o lado onde o SMTP não é bloqueado, funcionando como uma ponte

Instalação

Tanto na parte do cliente quanto na parte do servidor, basta instalar o mesmo módulo

npm install --save nodemailer-http-transport

O lado do cliente

A unica limitação é que não é possível enviar anexos (ainda :D) de resto, é como usar o nodemailer, basta criar o transport com o módulo

var nodemailer = require('nodemailer');
var http_transporter = require('nodemailer-http-transport');

//Definindo o transport
var transporter = nodemailer.createTransport(
  http_transporter.client({
    token: 'EsteDeveSerUmTokenGrandeEAleatório', //este é o token definido pelo lado do servidor
    url: 'https://AlgumServidorPorAi/rota-do-nodelmailer',
    transporter : 'smtp://naoresponda%40email.com:senha@smtp.com'
  })
)


//igualzinho ao nodemailer :D
transporter.sendMail(mailOptions, function(error, info){
  console.log("Error ",error);
  console.log('Info ' + info);
});

O lado do servidor

Você precisa configurar o express (se já não tiver configurado) e definir uma rota com o método post para o módulo com a função server do módulo, além disso, é necessário que seja definido um token (o mesmo definido no lado do cliente) usando a função setToken e passando o token como argumento, este token deve ser gerado de forma segura, deixar esse token não seguro, pode fazer alguém usar o seu servidor de email!

//carregando o módulo
var http_transporter  = require('nodemailer-http-transport');

//definindo o token do servidor (define uma coisa legal :D)
http_transporter.setToken('EsteDeveSerUmTokenGrandeEAleatório');

//definir uma rota no app.post e passar a função server
app.post('/http-mailer',http_transporter.server);

Quer ajudar?

Qualquer ajuda é bem vinda! Pool requests são bem vindos :D

Coisas a fazer

  • Possibilidade de enviar anexos
  • Usar várias conexões smtp no servidor
  • Talvez evoluir o servidor para outro projeto, criando uma api para envio de emails
  • Melhorar a segurança em geral

Licença

Este projeto usa a licença MIT, praticamente você pode fazer o que quiser com o projeto :D