我最近开始编程我的第一个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!"); }); } }); };
我可能会将邮件程序部分移至其自己的模块,但是我在此处包括了所有内容,因此您可以一起看到它们。