使用ejs模板发送带有模板的电子邮件以呈现内容 但是在发送电子邮件得到 ENOENT:没有此类文件或目录,统计信息
时遇到此问题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
答案 0 :(得分:0)
要进行故障排除,我将尝试将模板文件放置在代码所在的目录中,然后将其移至发现问题时所需的位置。毫无疑问,这是一个路径问题。
答案 1 :(得分:0)
有效,我已将文件名更改为html.ejs并删除了'emailView'
OLD
var templateDir = path.join(__dirname, 'template','emailView');
新
var templateDir = path.join(__dirname, 'template');