Nodejs 使用nodemailer发邮件 html内容怎么像模板引擎那样定制

Nodejs 使用nodemailer发邮件 html内容怎么像模板引擎那样定制
### Node.js 使用 Nodemailer 发邮件 HTML 内容怎么像模板引擎那样定制

在使用 Node.js 和 Nodemailer 发送邮件时,你可能希望发送包含动态内容的 HTML 邮件。为了实现这一点,你可以将邮件内容视为模板,并使用模板引擎来生成最终的 HTML。这不仅可以让邮件内容更加灵活,还可以提高代码的可维护性。

步骤 1: 安装 Nodemailer 和 EJS 模板引擎

首先,你需要安装 nodemailerejs(一个流行的模板引擎):

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>

在这个模板中,我们定义了三个变量:titlegreetingmessage

步骤 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);
            }
        });
    }
});

解释

  1. Nodemailer 设置:配置 Nodemailer 运输工具以使用 Gmail 服务。
  2. EJS 渲染:使用 ejs.renderFile 方法读取 EJS 模板文件,并传入数据对象来替换模板中的占位符。
  3. 邮件发送:构造邮件选项并使用 transporter.sendMail 方法发送邮件。

通过这种方式,你可以轻松地通过模板引擎定制邮件内容,使其更符合需求。


1 回复

Node.js 使用 Nodemailer 发邮件 HTML 内容怎么像模板引擎那样定制

在使用 Node.js 和 Nodemailer 发送邮件时,你可能希望发送包含动态内容的 HTML 邮件。为了实现这一点,你可以将邮件内容视为模板,并使用模板引擎来生成最终的 HTML。这不仅可以让邮件内容更加灵活,还可以提高代码的可维护性。

步骤 1: 安装 Nodemailer 和 EJS 模板引擎

首先,你需要安装 nodemailerejs(一个流行的模板引擎):

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>

在这个模板中,我们定义了三个变量:titlegreetingmessage

步骤 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);
            }
        });
    }
});

解释

  1. Nodemailer 设置:配置 Nodemailer 运输工具以使用 Gmail 服务。
  2. EJS 渲染:使用 ejs.renderFile 方法读取 EJS 模板文件,并传入数据对象来替换模板中的占位符。
  3. 邮件发送:构造邮件选项并使用 transporter.sendMail 方法发送邮件。

通过这种方式,你可以轻松地通过模板引擎定制邮件内容,使其更符合需求。

回到顶部