环境准备

首先,确保你的开发环境中已安装Node.js。

如果没有安装Node.js,你可以看我的这篇文章 使用CLI脚手架搭建Vue项目的安装Node.js部分 ,或者看这篇文章 nvm管理node环境

接下来,在你的项目目录下初始化一个新的Node.js项目并安装Nodemailer:

nodemailer是一个Node.js模块,它提供了非常灵活的自定义配置帮助我们轻松发送邮件。 官网地址

官网地址
官网地址
        
bash
1234
mkdir nodemailer-example cd nodemailer-example npm init -y npm install nodemailer

发送邮件基础

最简单的示例

让我们从一个最基础的例子开始,发送一封简单的文本邮件。

        
JavaScript
123456789101112131415161718192021222324252627282930
const nodemailer = require('nodemailer'); // 创建一个SMTP传输器 const transporter = nodemailer.createTransport({ host: 'smtp.example.com', // SMTP服务器地址 port: 587, // SMTP服务器端口 secure: false, // 是否使用SSL,对于非465端口通常为false auth: { user: 'your-email@example.com', pass: 'your-password' } }); // 邮件内容配置 const mailOptions = { from: '"Fred Foo 👻" <from@example.com>', // 发件人 to: 'to@example.com', // 收件人 subject: 'Hello ✔', // 主题 text: 'Hello world?', // 纯文本内容 html: '<b>Hello world?</b>' // HTML内容 }; // 发送邮件 transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log(error); } console.log('Message sent: %s', info.messageId); // 如果需要,还可以用info对象做更多事情,比如获取邮件ID });

如何设置host, port, secure

配置163邮箱服务器
配置163邮箱服务器
配置163邮箱认证密码
配置163邮箱认证密码

使用环境变量保护敏感信息

在实际开发中,直接在代码中硬编码邮箱用户名和密码是不安全的。推荐的做法是使用环境变量存储这些敏感信息。

        
JavaScript
1234567891011
require('dotenv').config(); // 引入dotenv模块,用于加载环境变量 // ... const transporter = nodemailer.createTransport({ // ... auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS } });

确保在你的项目根目录创建一个.env文件,格式如下:

        
code
12
EMAIL_USER=your-email@example.com EMAIL_PASS=your-password

高级功能探索

发送附件

Nodemailer允许你轻松地添加附件到邮件中。

        
JavaScript
12345678910
mailOptions.attachments = [ { // 二进制附件 filename: 'text.txt', content: Buffer.from('Some text here...'), }, { // 文件路径作为附件 filename: 'image.jpg', path: '/path/to/file/image.jpg' // 在本地文件系统中的路径 } ];

使用模板引擎

为了动态生成邮件内容,可以结合模板引擎(如EJS、Pug或Handlebars)来渲染邮件HTML。

  1. 安装EJS模板引擎:npm install ejs

  2. 创建一个邮件模板,如emailTemplate.ejs:

            
    HTML
    12
    <h1>Welcome, <%= name %></h1> <p>Thank you for joining us!</p>
  3. 在Node.js中使用模板:

        
JavaScript
12345678910111213
const ejs = require('ejs'); const fs = require('fs'); // 读取并渲染模板 fs.readFile('./emailTemplate.ejs', 'utf8', (err, data) => { if (err) throw err; const html = ejs.render(data, { name: 'John Doe' }); // 将渲染后的HTML设置为邮件内容 mailOptions.html = html; // 发送邮件... });

总结

Nodemailer是一个强大且灵活的库,能够满足各种邮件发送需求。通过本文的介绍,你应该已经掌握了如何在Node.js应用中集成Nodemailer进行邮件发送的基础知识及一些进阶技巧。记得在实际应用中考虑安全性、性能优化以及用户体验,让邮件服务成为你应用的可靠一环。