将模板发送到电子邮件时,未保存哈巴狗模板的动态数据
Dynamic data of pug template not getting saved, when sending template to email
我使用 pug 引擎创建了一个电子邮件模板。模板位于 views
文件夹内,名称为 index.pug
.
我想将数据动态添加到模板中。数据存在于 users
数组中。我使用 for each
方法在模板中使用了这个对象。在本地查看模板,我可以看到模板中的动态内容。
但是当使用nodemailer发送相同的模板时,那里看不到动态内容。
下面是index.js
文件
的代码
const express = require('express'); // Import the express dependency
const app = express();
const path = require('path'); // Instantiate an express app, the main work horse of this server
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'pug');
const users = [
{
"id" : 1,
"pncde" : "PB001-3W",
"desc":"Face Mask, White (50 pcs/box)",
"qty":"1",
"unitPrice":".00",
"serviceFee":".00",
"amount":".00"
},
{
"id" : 2,
"pncde" : "PB001-3W",
"desc":"Face Mask, White (50 pcs/box)",
"qty":"1",
"unitPrice":".00",
"serviceFee":".00",
"amount":".00"
}
]
app.get('/', (req, res) => {
res.render('index',{ 'users': users });
})
app.listen(3000, () => console.log('Listening on port 3000'))
var nodemailer = require('nodemailer');
const {pugEngine} = require("nodemailer-pug-engine");
const mailer = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'bhavya@gmail.com',
pass: 'pwtiuyhjtn'
}
});
mailer.use('compile', pugEngine({
templateDir: __dirname + '/views',
pretty: true
}));
mailer.sendMail({
to: 'bhavya@gmail.com',
template: 'index',
subject: "Purchase Order Template for 10 products",
ctx: {
}
});
谁能帮我解决这个问题?
您没有使用 ctx
对象将 users
传递给模板。
mailer.sendMail({
to: 'bhavya@gmail.com',
template: 'index',
subject: "Purchase Order Template for 10 products",
ctx: {
users // <-- same as res.render('index',{ users });
}
});
顺便说一下,这个 { users }
是您 { 'users': users }
的快捷方式,只是为了清楚起见。
我使用 pug 引擎创建了一个电子邮件模板。模板位于 views
文件夹内,名称为 index.pug
.
我想将数据动态添加到模板中。数据存在于 users
数组中。我使用 for each
方法在模板中使用了这个对象。在本地查看模板,我可以看到模板中的动态内容。
但是当使用nodemailer发送相同的模板时,那里看不到动态内容。
下面是index.js
文件
const express = require('express'); // Import the express dependency
const app = express();
const path = require('path'); // Instantiate an express app, the main work horse of this server
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'pug');
const users = [
{
"id" : 1,
"pncde" : "PB001-3W",
"desc":"Face Mask, White (50 pcs/box)",
"qty":"1",
"unitPrice":".00",
"serviceFee":".00",
"amount":".00"
},
{
"id" : 2,
"pncde" : "PB001-3W",
"desc":"Face Mask, White (50 pcs/box)",
"qty":"1",
"unitPrice":".00",
"serviceFee":".00",
"amount":".00"
}
]
app.get('/', (req, res) => {
res.render('index',{ 'users': users });
})
app.listen(3000, () => console.log('Listening on port 3000'))
var nodemailer = require('nodemailer');
const {pugEngine} = require("nodemailer-pug-engine");
const mailer = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'bhavya@gmail.com',
pass: 'pwtiuyhjtn'
}
});
mailer.use('compile', pugEngine({
templateDir: __dirname + '/views',
pretty: true
}));
mailer.sendMail({
to: 'bhavya@gmail.com',
template: 'index',
subject: "Purchase Order Template for 10 products",
ctx: {
}
});
谁能帮我解决这个问题?
您没有使用 ctx
对象将 users
传递给模板。
mailer.sendMail({
to: 'bhavya@gmail.com',
template: 'index',
subject: "Purchase Order Template for 10 products",
ctx: {
users // <-- same as res.render('index',{ users });
}
});
顺便说一下,这个 { users }
是您 { 'users': users }
的快捷方式,只是为了清楚起见。