我正在使用nodemailer发送电子邮件,但我想知道如何从目录发送静态HTML文件。
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
};
答案 0 :(得分:2)
您可以使用 fs
读取模板文件,并使用 handlebars
替换模板中的值。
这里有一个例子:
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: 'from@toto.com',
to : 'to@toto.com',
subject : 'test',
html : htmlToSend
};
smtpTransport.sendMail(mailOptions, (error, info) => {
if (error) console.log(error);
});
});
答案 1 :(得分:0)
您将必须使用fs
模块读取文件。
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
}
如果文件不会更改,则可以缓存内容。