将模板发送到电子邮件时,未保存哈巴狗模板的动态数据

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 } 的快捷方式,只是为了清楚起见。