Отправка электронной почты с шаблонами с использованием шаблона 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
, в котором 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