使用nodemailer和把手发送电子邮件

时间:2019-05-20 17:55:18

标签: handlebars.js nodemailer express-handlebars

我想使用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'

2 个答案:

答案 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的位置。

希望可以帮助您!