Come inviare una pagina html come email in nodejs

Recentemente ho iniziato a programmare il mio primo nodo.js. Non riesco a trovare alcun modulo dal nodo che sia in grado di inviare la pagina html come email. per favore aiuto, grazie!

Ho utilizzato questo modulo: https://github.com/andris9/Nodemailer

Esempio aggiornato (utilizzando express e nodemailer) che include il get modello index.jade dal file system e l’invio come e-mail:

var _jade = require('jade'); var fs = require('fs'); var nodemailer = require("nodemailer"); var FROM_ADDRESS = '[email protected]'; var TO_ADDRESS = '[email protected]'; // create reusable transport method (opens pool of SMTP connections) var smtpTransport = nodemailer.createTransport("SMTP",{ service: "Gmail", auth: { user: "[email protected]", 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!"); }); } }); }; 

Probabilmente sposterei la parte mailer nel suo modulo, ma ho incluso tutto qui in modo che tu possa vederlo tutto insieme.

È ansible utilizzare i nodemailer e nodemailer-express-handlebars :

 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: [[email protected]], // 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 })); 

Nel post del router è ansible utilizzare:

 mailer.sendMail({ from: 'Your name [email protected]', 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'); }); 

Nel template hbs puoi usare le variabili:

 {{var from context}} 

spero blocchi di codice per aiutarti.