如何在nodejs中以电子邮件的forms发送html页面

我最近开始编程我的第一个node.js。 我找不到能够发送HTML页面作为电子邮件的节点的任何模块。 请帮忙,谢谢!

我一直在使用这个模块: https : //github.com/andris9/Nodemailer

更新的示例(使用express和nodemailer),包括从文件系统获取index.jade模板并将其作为电子邮件发送:

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!"); }); } }); }; 

我可能会把邮件程序部分移到它自己的模块中,但是我在这里包括了所有的东西,所以你可以一起看到它们。

你可以使用nodemailernodemailer-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: [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 })); 

在路由器后,您可以使用:

 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'); }); 

在hbs模板中,你可以使用variables:

 {{var from context}} 

希望代码块帮助你。