在Node.js Express.js方法之间传递变量
我是Node.js的新手,我正在尝试将用户名参数从app.post()传递到readHtml(),但它没有定义,我尝试在函数之前声明变量,并在其中赋值,然后我收到的电子邮件不需要替换就发送了在Node.js Express.js方法之间传递变量,node.js,express,Node.js,Express,我是Node.js的新手,我正在尝试将用户名参数从app.post()传递到readHtml(),但它没有定义,我尝试在函数之前声明变量,并在其中赋值,然后我收到的电子邮件不需要替换就发送了 app.post('/sendmail', (req, res) => { console.log("mail request came"); var userName1 = req.body.userInfo.userName; sendMail(userMail1, in
app.post('/sendmail', (req, res) => {
console.log("mail request came");
var userName1 = req.body.userInfo.userName;
sendMail(userMail1, info => {
console.log(`The mail has beed sent`);
res.send(info);
});
});
readHTMLFile(__dirname + '/mail.html', function(err, html) {
var template = handlebars.compile(html);
var replacements = {
userName: userName1,
};
htmlToSend = template(replacements);
});
async function sendMail(user, callback) {
let transporter = nodeMailer.createTransport({
host: '',
port: 465,
secure: true,
auth: {
user: config.email,
pass: config.password
}
});
let mailOptions = {
from: config.email,
to: user,
subject: 'Reservation',
html:htmlToSend,
attachments: [
{
filename: 'logo-01.png',
path: __dirname + '/img/rsz_1logo-01.png',
cid: ''
}]
}
let info = await transporter.sendMail(mailOptions);
callback(info);
}
对readHTMLFile文件的回调(仅在启动时执行一次)应仅将模板编译为函数
var template;
readHTMLFile(__dirname + '/mail.html', function(err, html) {
template = handlebars.compile(html);
});
替换应该发生在为每个请求执行的sendMail函数中(其中您有一个对用户对象的引用)
让邮件选项={
发件人:config.email,
致:用户:,
主题:“预订”,
html:template({userName:user.name}),//对readHTMLFile文件的回调(仅在启动时执行一次)应仅将模板编译为函数
var template;
readHTMLFile(__dirname + '/mail.html', function(err, html) {
template = handlebars.compile(html);
});
替换应该发生在为每个请求执行的sendMail函数中(其中您有一个对用户对象的引用)
让邮件选项={
发件人:config.email,
致:用户:,
主题:“预订”,
html:template({userName:user.name})//