Nodejs 使用nodemailer发邮件 html内容怎么像模板引擎那样定制
Nodejs 使用nodemailer发邮件 html内容怎么像模板引擎那样定制
### Node.js 使用 Nodemailer 发邮件 HTML 内容怎么像模板引擎那样定制
在使用 Node.js 和 Nodemailer 发送邮件时,你可能希望发送包含动态内容的 HTML 邮件。为了实现这一点,你可以将邮件内容视为模板,并使用模板引擎来生成最终的 HTML。这不仅可以让邮件内容更加灵活,还可以提高代码的可维护性。
步骤 1: 安装 Nodemailer 和 EJS 模板引擎
首先,你需要安装 nodemailer
和 ejs
(一个流行的模板引擎):
npm install nodemailer ejs
步骤 2: 创建 EJS 模板
创建一个简单的 EJS 模板文件,例如 email-template.ejs
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<h1><%= greeting %>, <%= name %></h1>
<p><%= message %></p>
</body>
</html>
在这个模板中,我们定义了三个变量:title
、greeting
和 message
。
步骤 3: 编写发送邮件的 Node.js 脚本
接下来,编写一个 Node.js 脚本来读取 EJS 模板并将其渲染为 HTML 字符串,然后通过 Nodemailer 发送邮件:
const nodemailer = require('nodemailer');
const ejs = require('ejs');
const fs = require('fs');
// 创建一个 Nodemailer 运输工具
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-password'
}
});
// 渲染 EJS 模板
ejs.renderFile(__dirname + '/email-template.ejs', {
title: '欢迎邮件',
greeting: '亲爱的',
name: '张三',
message: '欢迎加入我们的社区!'
}, (err, data) => {
if (err) {
console.log('EJS 渲染错误:', err);
} else {
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: '欢迎邮件',
html: data
};
// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('邮件发送失败:', error);
} else {
console.log('邮件已成功发送:', info.response);
}
});
}
});
解释
- Nodemailer 设置:配置 Nodemailer 运输工具以使用 Gmail 服务。
- EJS 渲染:使用
ejs.renderFile
方法读取 EJS 模板文件,并传入数据对象来替换模板中的占位符。 - 邮件发送:构造邮件选项并使用
transporter.sendMail
方法发送邮件。
通过这种方式,你可以轻松地通过模板引擎定制邮件内容,使其更符合需求。
Node.js 使用 Nodemailer 发邮件 HTML 内容怎么像模板引擎那样定制
在使用 Node.js 和 Nodemailer 发送邮件时,你可能希望发送包含动态内容的 HTML 邮件。为了实现这一点,你可以将邮件内容视为模板,并使用模板引擎来生成最终的 HTML。这不仅可以让邮件内容更加灵活,还可以提高代码的可维护性。
步骤 1: 安装 Nodemailer 和 EJS 模板引擎
首先,你需要安装 nodemailer
和 ejs
(一个流行的模板引擎):
npm install nodemailer ejs
步骤 2: 创建 EJS 模板
创建一个简单的 EJS 模板文件,例如 email-template.ejs
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<h1><%= greeting %>, <%= name %></h1>
<p><%= message %></p>
</body>
</html>
在这个模板中,我们定义了三个变量:title
、greeting
和 message
。
步骤 3: 编写发送邮件的 Node.js 脚本
接下来,编写一个 Node.js 脚本来读取 EJS 模板并将其渲染为 HTML 字符串,然后通过 Nodemailer 发送邮件:
const nodemailer = require('nodemailer');
const ejs = require('ejs');
// 创建一个 Nodemailer 运输工具
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-password'
}
});
// 渲染 EJS 模板
ejs.renderFile(`${__dirname}/email-template.ejs`, {
title: '欢迎邮件',
greeting: '亲爱的',
name: '张三',
message: '欢迎加入我们的社区!'
}, (err, data) => {
if (err) {
console.log('EJS 渲染错误:', err);
} else {
const mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@example.com',
subject: '欢迎邮件',
html: data
};
// 发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log('邮件发送失败:', error);
} else {
console.log('邮件已成功发送:', info.response);
}
});
}
});
解释
- Nodemailer 设置:配置 Nodemailer 运输工具以使用 Gmail 服务。
- EJS 渲染:使用
ejs.renderFile
方法读取 EJS 模板文件,并传入数据对象来替换模板中的占位符。 - 邮件发送:构造邮件选项并使用
transporter.sendMail
方法发送邮件。
通过这种方式,你可以轻松地通过模板引擎定制邮件内容,使其更符合需求。