¿Enviar correos electrónicos en Node.js? [cerrado]


291

Recientemente comencé a programar mi primer nodo.js. Sin embargo, descubrí que no puedo crear un formulario de contacto que se envíe directamente a mi correo electrónico ya que no puedo encontrar ningún módulo del nodo que pueda enviar correos electrónicos.

¿Alguien sabe de una biblioteca de correo electrónico de node.js o un script de formulario de contacto de muestra?


Pedido: AWS-SES gratis 62000 emails sobre aplicaciones EC2.
Harvey

Respuestas:


142

node-email-templates es una opción mucho mejor: https://github.com/niftylettuce/node-email-templates

También tiene soporte para Windows


1
Esto realmente ayuda a que los documentos se expliquen por sí mismos.
NycCompSci


77
eso es porque su nodemailer.com ahora lo estoy usando en mi proyecto, funciona bien, nodejitsu no tuvo problemas para enviar correo a través de los servidores smtp de gmail.
jascha

2
He pasado algunas horas en los últimos dos días tratando de ponerme node-email-templatesen marcha. Solo quiero usarlo como un objeto que inicializo y luego usar para enviar. No puedo hacer que funcione. Renunciando.
jcollum 01 de

Tutorial resultó valioso (Nodejs Gamil OAuth2) masashi-k.blogspot.com.au/2013/06/…
eddyparkinson

162

Nodemailer es básicamente un módulo que le brinda la capacidad de enviar correos electrónicos fácilmente al programar en Node.js. Hay algunos excelentes ejemplos de cómo usar el módulo Nodemailer en http://www.nodemailer.com/ . Las instrucciones completas sobre cómo instalar y usar la funcionalidad básica de Nodemailer se incluyen en este enlace.

Personalmente tuve problemas para instalar Nodemailer usando npm, así que acabo de descargar la fuente. Hay instrucciones tanto para instalar npm como para descargar la fuente.

Este es un módulo muy simple de usar y se lo recomendaría a cualquiera que quiera enviar correos electrónicos usando Node.js. ¡Buena suerte!


2
¡nodemailer funcionó al principio!
Capy

lo probé con SMTP y Amazon SES, funciona para mí, lo integró en el marco de ConnectedSets
Jean Vincent

simple, no hay trabajo duro para configurarlo. simplemente copié el código de ejemplo, cambié mi información (lea sobre SSL seguro) y simplemente funcionó. ¡ideal para un simple remitente de correo electrónico!

Es un proyecto comercial ahora, así que ten cuidado.
elliotrock

2
Esta respuesta debe incluir un ejemplo
Abraham TS,

65

Echa un vistazo a emailjs

Después de perder mucho tiempo tratando de hacer que nodemailer funcione con archivos adjuntos grandes, encontré emailjs y feliz desde entonces.

Admite el envío de archivos mediante el uso de objetos de archivo normales y no enormes Buffers como requiere el nodo de correo. Significa que puede vincularlo, fe, formidable para pasar los archivos adjuntos de un formulario html al mailer. También es compatible con las colas.

En general, no tengo idea de por qué nodejitsu ppl eligió nodemailer para basar su versión, emailjs es mucho más avanzado.


3
Después de un uso prolongado, tuvo que bifurcarlo para solucionar un problema: a menos que dentro del proceso de envío de correo, la cosa no procesara eventos de socket y, por lo tanto, se detuviera después de un tiempo inactivo, ya que el servidor cerraría la conexión, pero allí No fue nada para procesar el evento y restablecer las variables internas. Puede encontrar la versión bifurcada aquí: https://github.com/silvioster/emailjs . Esta versión ha funcionado de manera estable durante bastante tiempo, sin puestos de venta.
silvio

18
actualización al comentario anterior, el autor original corrigió ese error y algunos otros también, por lo que ya no se necesita fork. la última versión debe estar en https://github.com/eleith/emailjs
silvio

1
nodemailer también admite secuencias de archivos adjuntos, no solo "enormes Buffers"
JoshuaDavid

57

Código completo para enviar correo electrónico utilizando el módulo nodemailer

var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "gmail_id@gmail.com",
        pass: "gmail_password"
    }
});

var mail = {
    from: "Yashwant Chavan <from@gmail.com>",
    to: "to@gmail.com",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: "<b>Node.js New world for me</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

44
Me pareció Nodemailer mucho más fácil de usar que node-email-templates. Tal vez sea porque solo estaba tratando de enviar mensajes de texto básicos básicos / correo electrónico html básico, pero encontré que node-email-templatesnecesitaba mucha más configuración, mientras que Nodemailerestaba en funcionamiento literalmente en 2 minutos.
JVG

44
¿Aparte de gmail? ¿Cómo podemos configurar nuestro propio servidor smtp?
Balaji Boggaram Ramanarayan

1
Me sale este error después de compilar con webpack: TypeError: Cannot create property 'mailer' on string 'SMTP' at new Mail. He ido a publicaciones como esta y luego a esta página, pero aún perdí.
user1063287

2
@ user1063287 Simplemente elimine el parámetro "SMTP"
Bojan Radivojevic Bomber

1
Solo para que sepa, no puede cambiar la dirección de origen a otra que no sea su propia dirección de correo electrónico que utilizó como autenticación. Gmail fuerza la dirección de origen a esa para que pueda confirmar la autoridad del remitente.
Nicholas Mordecai

25

La respuesta aceptada de @JimBastard parece estar fechada, eché un vistazo y esa libreta de correo no se ha tocado en más de 7 meses, tiene varios errores enumerados y ya no está registrada en npm.

nodemailer ciertamente parece la mejor opción, sin embargo, la URL proporcionada en otras respuestas en este hilo son todas 404'ing.

nodemailer afirma que admite complementos fáciles en gmail, hotmail, etc. y también tiene una documentación realmente hermosa.


9

Siempre puedes usar AlphaMail ( divulgación: soy uno de los desarrolladores detrás de él ).

Simplemente instale con NPM :

npm install alphamail

Regístrese para obtener una cuenta AlphaMail. Obtenga un token y luego puede comenzar a enviar con el servicio AlphaMail.

var alphamail = require('alphamail');

var emailService = new alphamail.EmailService()
    .setServiceUrl('http://api.amail.io/v1/')
    .setApiToken('YOUR-ACCOUNT-API-TOKEN-HERE');

var person = {
    id: 1234,
    userName: "jdoe75",
    name: {
        first: "John",
        last: "Doe"
    },
    dateOfBirth: 1975
};

emailService.queue(new alphamail.EmailMessagePayload()
    .setProjectId(12345) // ID of your AlphaMail project (determines template, options, etc)
    .setSender(new alphamail.EmailContact("Sender Company Name", "from@example.com"))
    .setReceiver(new alphamail.EmailContact("John Doe", "to@example.org"))
    .setBodyObject(person) // Any serializable object
);

Y en la GUI de AlphaMail ( Tablero ) podrá editar la plantilla con los datos que envió:

<html>
    <body>
        <b>Name:</b> <# payload.name.last " " payload.name.first #><br>
        <b>Date of Birth:</b> <# payload.dateOfBirth #><br>

        <# if (payload.id != null) { #>
            <a href="http://company.com/sign-up">Sign Up Free!</a>
        <# } else { #>
            <a href="http://company.com/login?username=<# urlencode(payload.userName) #>">Sign In</a>
        <# } #>
    </body>
</html>

Las plantillas están escritas en Comlang , es un lenguaje de plantillas simple diseñado específicamente para correos electrónicos.


12
Alphamail ahora está oficialmente muerto. Muy desafortunado: comencé a usarlo exactamente debido a esta publicación. Deseando a los desarrolladores todo lo mejor en su próxima aventura.
Masotime



3

npm tiene algunos paquetes, pero ninguno ha llegado a 1.0 todavía. Las mejores selecciones de npm list mail:

email@0.2.2
mail@0.1.1
mailer@0.3.0


2

La campaña es una solución integral para enviar correos electrónicos en Node, y viene con una API muy simple.

Lo instalas así.

var client = require('campaign')({
  from: 'you@gmail.com'
});

Para enviar correos electrónicos, puede usar Mandrill , que es gratuito e increíble. Simplemente configure su clave API, así:

process.env.MANDRILL_APIKEY = '<your api key>';

(si desea enviar correos electrónicos utilizando otro proveedor, consulte los documentos)

Luego, cuando desee enviar un correo electrónico, puede hacerlo así:

client.sendString('<p>{{something}}</p>', {
  to: ['someone@gmail.com', 'someone.else@gmail.com'],
  subject: 'Some Subject',
  preview': 'The first line',
  something: 'this is what replaces that thing in the template'
}, done);

El repositorio de GitHub tiene una documentación bastante extensa .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.