Reputation: 81
I am sending emails using nodemailer, but I wanna know how to send a static HTML file from a directory.
let transporter = nodemailer.createTransport({
host: auth.host,
port: auth.port,
secure: auth.secure,
auth: {
type: auth.type,
user: auth.user,
clientId: auth.clientId,
clientSecret: auth.clientSecret,
refreshToken: auth.refreshToken,
accessToken: auth.accessToken,
expires: auth.expires
}
});
let mailOptions = {
from: '"xxxxx',
to: 'xxxx',
subject: "xxxx",
text: `xxxx`,
html: email.html
};
Upvotes: 6
Views: 13853
Reputation: 528
You could use fs
to read your template file, and handlebars
to replace your values in the template.
Here an example :
const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
const handlebars = require('handlebars');
const { promisify } = require('util');
const fs = require('fs');
const readFile = promisify(fs.readFile);
smtpTransport = nodemailer.createTransport(smtpTransport({
host: mailConfig.host,
secure: mailConfig.secure,
port: mailConfig.port,
auth: {
user: mailConfig.auth.user,
pass: mailConfig.auth.pass
}
}));
const sendMail = async () => {
let html = await readFile('/path/to/file', 'utf8');
let template = handlebars.compile(html);
let data = {
username: "Toto"
};
let htmlToSend = template(data);
let mailOptions = {
from: '[email protected]',
to : '[email protected]',
subject : 'test',
html : htmlToSend
};
smtpTransport.sendMail(mailOptions, (error, info) => {
if (error) console.log(error);
});
});
Upvotes: 8
Reputation: 40394
You will have to read the file using the fs
module.
const fs = require('fs');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);
async function sendMail() {
let transporter = nodemailer.createTransport({
host: auth.host,
port: auth.port,
secure: auth.secure,
auth: {
type: auth.type,
user: auth.user,
clientId: auth.clientId,
clientSecret: auth.clientSecret,
refreshToken: auth.refreshToken,
accessToken: auth.accessToken,
expires: auth.expires
}
});
let mailOptions = {
from: '"xxxxx',
to: 'xxxx',
subject: "xxxx",
text: `xxxx`,
html: await readFile('/path/to/file', 'utf8')
};
// send mail
}
If the file won't change, you can cache the content.
Upvotes: 6