我最近开始编写我的第一个node.js.我找不到任何能够将HTML页面作为电子邮件发送的节点。请帮忙,谢谢!如何在nodejs中以电子邮件的形式发送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 = '[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: "bar[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!");
});
}
});
};
我'd可能会将邮件程序部分移到它自己的模块中,但我将所有内容都包含在这里,以便您可以一起看到它。
您可以使用nodemailer
和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
}));
在路由器后,您可以使用:
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');
});
在HBS模板,你可以使用变量:
{{var from context}}
希望代码块可以帮助你。
其必须给extName只.hbs?我可以使用.html吗? –
您可以使用'engine'模板的语法在'.html'中显示一个变量 –
我正在使用html视图引擎,无法在html文件中访问上下文变量,我该怎么办? –
- 1. HTML模板和绑定数据在Nodejs中以电子邮件形式发送
- 2. 以HTML代码形式发送的HTML电子邮件
- 3. 以HTML格式发送电子邮件
- 4. 以html格式发送电子邮件
- 5. CakePHP电子邮件以文本形式发送而不是HTML
- 6. PHP的形式不电子邮件发送电子邮件
- 7. HTML电子邮件形式不发送邮件
- 8. 如何通过HTML发送电子邮件页面
- 9. PHP的形式发送电子邮件
- 10. 通过PHP在电子邮件中发送HTML页面
- 11. 发送HTML格式的电子邮件
- 12. 发送HTML格式的电子邮件
- 13. 如何在html电子邮件中发送电子邮件回复或转发?
- 14. 发送HTML电子邮件
- 15. 发送HTML电子邮件但以纯文本形式发送,为什么?
- 16. 如何发送HTML/CSS电子邮件?
- 17. 如何发送HTML电子邮件
- 18. 如何发送html电子邮件?
- 19. HTML电子邮件形式
- 20. 从ASP.NET页面发送电子邮件
- 21. 页面发送电子邮件
- 22. 从aspx页面发送电子邮件
- 23. 通过电子邮件发送页面
- 24. 在Windows 8中以html格式发送电子邮件metro
- 25. 以Magento中的电子邮件形式发送表单数据
- 26. 在Django中发送html电子邮件
- 27. 如何使用nodejs中的附件发送电子邮件?
- 28. 发送电子邮件形式的PHP/html
- 29. 发送电子邮件,但只有HTML和/或JavaScript的形式?
- 30. 在电子邮件中发送网页
我也用过它,但它不能发送复杂的模板 – user3044147
你是什么意思的复杂模板?只要你的模板被编译成一个字符串,我不明白为什么它不起作用。 – Ryan
我得到这个https://github.com/niftylettuce/node-email-templates。尝试 – user3044147