我想使用Nodemailer和Handlebars发送电子邮件,但不能使用动态模板。
这是我的设置。 template
是模板名称,看起来像sign-up-mail-template
现在,当我发送此电子邮件时,我将收到Error: ENOENT: no such file or directory, open '/home/ubuntu/backend/src/templates/sign-up-email-template.handlebars'
如果我将defaultLayout
更改为sign-up-email-template.hbs
,则可以毫无问题地发送电子邮件,但是即使我请求发送其他电子邮件模板,也可以假设password-reset-template
将在{{ 1}},它将发送mailOptions
。
可以请任何人向我解释一下我在做什么错吗?
如果defaultLayout
也会收到const template = "password-reset-template.hbs"
Error: ENOENT: no such file or directory, open '/home/ubuntu/backend/src/templates/password-reset-template.hbs.handlebars'
答案 0 :(得分:1)
您可以尝试一下,并记住正确创建模板文件夹。 默认布局保持空白,因此您可以在邮件选项中设置模板。
const handlebarOptions = {
viewEngine: {
extName: '.hbs',
partialsDir: 'views',//your path, views is a folder inside the source folder
layoutsDir: 'views',
defaultLayout: ''//set this one empty and provide your template below,
},
viewPath: 'views',
extName: '.hbs',
};
mailTransport.use('compile', hbs(handlebarOptions));
const mailOptions = {
from: '"Spammy Corp." <ad.timely@gmail.com>',
to: 'nipunkavishka@gmail.com',
template: 'index',//this is the template of your hbs file
};
答案 1 :(得分:0)
您需要创建一个像下面这样的main.handlebars file
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
{{{body}}}
</body>
</html>
{{body}}
是放置sign-up-email-template.handlebars
的位置。
希望可以帮助您!