Cómo enviar una página html como correo electrónico en nodejs

Recientemente comencé a progtwigr mi primer node.js. No puedo encontrar ningún módulo del nodo que pueda enviar una página html como correo electrónico. por favor ayuda, gracias!

He estado usando este módulo: https://github.com/andris9/Nodemailer

Ejemplo actualizado (utilizando express y nodemailer) que incluye obtener la plantilla index.jade del sistema de archivos y enviarla como un correo electrónico:

var _jade = require('jade'); var fs = require('fs'); var nodemailer = require("nodemailer"); var FROM_ADDRESS = 'foo@bar.com'; var TO_ADDRESS = 'test@test.com'; // create reusable transport method (opens pool of SMTP connections) var smtpTransport = nodemailer.createTransport("SMTP",{ service: "Gmail", auth: { user: "bar@foo.com", pass: "PASSWORD" } }); var sendMail = function(toAddress, subject, content, next){ var mailOptions = { from: "SENDERS NAME < " + FROM_ADDRESS + ">", to: toAddress, replyTo: fromAddress, subject: subject, html: content }; smtpTransport.sendMail(mailOptions, next); }; exports.index = function(req, res){ // res.render('index', { title: 'Express' }); // specify jade template to load var template = process.cwd() + '/views/index.jade'; // get template from file system fs.readFile(template, 'utf8', function(err, file){ if(err){ //handle errors console.log('ERROR!'); return res.send('ERROR!'); } else { //compile jade template into function var compiledTmpl = _jade.compile(file, {filename: template}); // set context to be used in template var context = {title: 'Express'}; // get html back as a string with the context applied; var html = compiledTmpl(context); sendMail(TO_ADDRESS, 'test', html, function(err, response){ if(err){ console.log('ERROR!'); return res.send('ERROR'); } res.send("Email sent!"); }); } }); }; 

Probablemente movería la parte del correo a su propio módulo, pero incluí todo aquí para que pueda verlo todo junto.

Puede usar los nodemailer y nodemailer-express-handlebars para hacer esto:

 var nodemailer = require('nodemailer'); var mailerhbs = require('nodemailer-express-handlebars'); var mailer = nodemailer.createTransport({ service: Gmail, // More at https://nodemailer.com/smtp/well-known/#supported-services auth: { user: [USERNAME@gmail.com], // Your email id pass: [PASSWORD] // Your password } }); mailer.use('compile', mailerhbs({ viewPath: 'templates/default/emails', //Path to email template folder extName: '.hbs' //extendtion of email template })); 

En la publicación del enrutador puedes usar:

 mailer.sendMail({ from: 'Your name username@domain.com', to: user.local.email, subject: 'Reset your password', template: 'password_reset', //Name email file template context: { // pass variables to template hostUrl: req.headers.host, customeName: user.info.firstname + ' ' + user.info.lastname, resetUrl: req.headers.host + '/users/recover/' + token, resetCode: token } }, function (err, response) { if (err) { res.send('Error send email, please contact administrator to best support.'); } res.send('Email send successed to you email' + req.body.email + '.'); done(err, 'done'); }); 

En la plantilla hbs puede usar variables:

 {{var from context}} 

Espero bloques de código para ayudarte.