Отправка электронной почты с помощью nodemailer и handlebars - PullRequest
0 голосов
/ 20 мая 2019

Я хочу отправить электронное письмо с использованием 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);
  });
...