我在node.js中编写服务。在那里,我曾经使用验证链接将邮件发送给用户。 为此,我使用了nodemailer,一切都很完美。在那,我直接使用了html部分,所以我访问了令牌变量。现在我需要将该html部分移动到单独的文件夹中。现在问题是访问令牌(即params值)我的代码就像,modules / users.js
let sendNotification = await mailer.sendMail(userDetail.email, token);
当我创建用户时,令牌被发送到userDetail.email。我以前的邮件程序看起来像邮件程序/ applicationMailer.js
async function sendMail(userMail, token) {
// let htmlTemplate = fs.readFileSync(__dirname + '/templates/mail.html');
let transporter = nodemailer.createTransport(smtpTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
auth: {
user: 'xxx@gmail.com',
pass: '********'
}
}));
let mailOptions = {
from: 'xxx@gmail.com',
to: userMail,
cc: '',
subject: 'Account verification',
// html: htmlTemplate
html: `<p>To verify your account click <a href="https://employee-attendance-service.herokuapp.com/users/verify?token=${token}">LINK</a></p>` +
`<p>This link will be expired in two days.</p>` +
`<p><strong>Note:</strong> Contact your ADMIN, if the link is expired</p>`
};
transporter.sendMail(mailOptions, async function (error, info) {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
};
我需要将html部分移动到template / mail.html并访问htmlTemplate变量。在那里我无法访问令牌。我需要将param值传递给html页面。怎么做?
提前致谢。
答案 0 :(得分:0)
您正在寻找 EJS
const ejs = require("ejs");
ejs.renderFile(__dirname + "/test.ejs", { token }, function (err, data) {
if (err) {
console.log(err);
} else {
const mainOptions = {
from: 'xxx@gmail.com',
to: userMail,
cc: '',
subject: 'Account verification',
html: data
};
transporter.sendMail(mainOptions, function (err, info) {
if (err) {
console.log(err);
} else {
console.log('Message sent: ' + info.response);
}
});
}
});