手把始终使用默认模板

问题描述 投票:0回答:1

我发邮件与。

            var data = {
                to: "toemail",
                from: "fromemail",
                template: 'sendtimesheetemail',
                subject: 'TimeSheet',
                context: {
                    url: 'https://via.placeholder.com/150',
                    user: user.email
                }
            };

            smtpTransport.sendMail(data, function(err) {
                if (!err) {
                    return res.json({ message: 'Email has been sent' });
                } else {
                    return res.status(423).json({ error: err });//done(err);
                }
            })

设置与

var handlebarsOptions = {
    viewEngine: {
        extname: '.html',
        layoutsDir: 'templates',
        defaultLayout : 'forgotpasswordemail',
        partialsDir : 'templates'
    },
    viewPath: 'templates/',
    extName: '.html'
};

var smtpTransport = nodemailer.createTransport({
    service: "hotmail",
    auth: {
        user: email,
        pass: pass
    }
});

和url、user以及邮件主题都被替换成了预期的样子,我用一个不存在的文件替换了模板,Postman表示我们找对了目录。

然而,实际使用的模板总是默认的 forgotpasswordemail?

javascript node.js handlebars.js
1个回答
0
投票

我也有同样的问题,只要把defaultLayout设置为空字符串,就可以根据mailoptions中的模板来决定。

var handlebarsOptions = {
    viewEngine: {
        extname: '.html',
        layoutsDir: 'templates',
        defaultLayout : '',
        partialsDir : 'templates'
    },
    viewPath: 'templates/',
    extName: '.html'
};
© www.soinside.com 2019 - 2024. All rights reserved.