【问题标题】:Nodejs Error: ENOENT: no such file or directory, statNodejs错误:ENOENT:没有这样的文件或目录,stat
【发布时间】:2018-08-24 18:49:05
【问题描述】:

使用 ejs 模板发送带有模板的电子邮件以呈现内容 但是在发送电子邮件时遇到这个问题 ENOENT: no such file or directory, stat

emailcontroller.js

sendEmail: function (req, res, next) {
    try {
        if (req.body.email) {
            var templateDir = path.join(__dirname, 'template','emailView');
            var temp = new EmailTemplate(templateDir);
            let transporter = nodemailer.createTransport({
                 host: 'smtp.gmail.com',
                port: 587,
                secure: false, // 
                auth: {
                  user: 'user@gmail.com', // generated ethereal user
                  pass: 'user12345' // generated ethereal password
                },
                tls: {
                    rejectUnauthorized: false
                }
            });
            var locals = {
                username: "User" //dynamic data for bind into the template
            };
            temp.render(locals, function (err, result) {
                if(err)
                console.log("err",err);
                else {
                        let mailOptions = {
                            from: 'user@gmail.com', // sender address
                            to: req.body.email, // list of receivers
                            subject: 'Welcome ✔', // Subject line
                            html:result.html,
                            text:result.text

                        };
                        transporter.sendMail(mailOptions, (error, info) => {
                            if (error) {
                                res.status(500).send(JSON.stringify({
                                    "status": "failed",
                                    "statuscode": res.statusCode,
                                    "message": error,
                                    "data": null
                                }));
                            } else {
                                res.status(200).send(JSON.stringify({
                                    "status": 0,
                                    "statuscode": res.statusCode,
                                }));

                            }
                        });
                    }
                })

            }

    } catch (err) {
        res.status(500).send(JSON.stringify({
            "status": 2,
            "statuscode": res.statusCode,
            "message": err.message,
            "data": null
        }));
    }

},

我的项目结构

D:\\xampp\\htdocs\\myproject\\controller\\template

template文件夹下的emailView.ejs文件

同时添加 app.js

app.engine('html',require('ejs').renderFile);
app.set('view engine', 'ejs');
app.set('view engine', 'html');

我找到了很多解决方案,但没有奏效 1. 我删除了 emailView

( eg :var templateDir = path.join(__dirname, 'template');)

但我得到了

Neither html nor text template files found or are both empty in path template

【问题讨论】:

    标签: node.js nodemailer email-templates


    【解决方案1】:

    为了解决问题,我会尝试将模板文件放在代码所在的同一目录中,并在您发现问题时将其移动到需要的位置。毫无疑问,这是一个路径问题。

    【讨论】:

    • 模板文件位于存在代码的同一文件夹中(“controller/tepmlate/emailView.ejs”),代码在控制器/emailcontroller.js中
    【解决方案2】:

    它有效,我已将文件名更改为 html.ejs 并删除 'emailView'
    OLD

      var templateDir = path.join(__dirname, 'template','emailView'); 
    

      var templateDir = path.join(__dirname, 'template'); 
    

    【讨论】:

      猜你喜欢
      • 2021-03-05
      • 2021-06-08
      • 1970-01-01
      • 2022-12-18
      • 2021-05-21
      • 2019-02-23
      • 2019-05-08
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多