Я хочу отправить электронное письмо с использованием 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
, который будет вызван в 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'
const transporter = nodemailer.createTransport(
smtpTransport({
host: constants.EMAIL_HOST,
port: constants.SMTP_PORT,
secure: false,
requireTLS: true,
auth: {
user: constants.EMAIL_USER,
pass: constants.EMAIL_PASSWORD
}
})
);
const handlebarsOptions = {
viewEngine: {
extName: ".hbs",
partialsDir: "./src/templates/",
layoutsDir: "./src/templates/",
defaultLayout: template
},
viewPath: path.resolve("./src/templates/"),
extName: ".html"
};
transporter.use("compile", hbs(handlebarsOptions));
const mailOptions = {
to: email,
from: '"Welcome" no-reply@mail.com',
template,
subject,
context: {
code: promoCode
}
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
throw new Error(error.message);
}
console.log("Message sent: %s", info.message);
});