- Node.js 教程
- Node.js - 首页
- Node.js - 简介
- Node.js - 环境搭建
- Node.js - 第一个应用程序
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调函数概念
- Node.js - 上传文件
- Node.js - 发送邮件
- Node.js - 事件
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 进程
- Node.js - 应用程序扩展
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲区
- Node.js - 流
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 入门
- Node.js - MySQL 创建数据库
- Node.js - MySQL 创建表
- Node.js - MySQL 插入数据
- Node.js - MySQL 查询数据
- Node.js - MySQL 条件查询
- Node.js - MySQL 排序
- Node.js - MySQL 删除数据
- Node.js - MySQL 更新数据
- Node.js - MySQL 连接查询
- Node.js MongoDB
- Node.js - MongoDB 入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB 插入数据
- Node.js - MongoDB 查找数据
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB 删除数据
- Node.js - MongoDB 更新数据
- Node.js - MongoDB 数据限制
- Node.js - MongoDB 连接查询
- Node.js 模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - 实用程序模块
- Node.js - Web 模块
- Node.js 有用资源
- Node.js - 快速指南
- Node.js - 有用资源
- Node.js - 讨论
Node.js - 发送邮件
发送邮件是任何 Node.js 应用程序(特别是 Express 应用程序)中所需的功能之一。NPM 仓库中有各种第三方模块可以实现此功能。Node.js 应用程序可以通过 Mailgun、MailTrap、Mailjet 等电子邮件 API 集成电子邮件功能。
在本章中,我们将学习如何使用 nodemailer 模块和 MailTrap API 发送电子邮件。
Nodemailer
Nodemailer 是一个使 Node.js 应用程序能够发送电子邮件的模块。您可以发送纯文本和 HTML 内容的电子邮件。它还支持添加附件、安全的 TLS 传输、内置 SMTP 支持、OAUTH2 身份验证以及许多其他功能。
首先,安装 nodemailer 模块。
npm install nodemailer
为了测试我们的支持电子邮件的 Node.js 应用程序,我们将使用 Mailtrap 服务,它提供一个虚拟 SMTP 服务器。当应用程序进入生产阶段时,您可以使用真实的 SMTP 服务器 URL。创建一个 Mailtrap 帐户,并从仪表板的“集成”下拉菜单中获取 API 凭据,选择 Nodemailer。
将以上代码与下面提供的其余代码一起保存 -
const nodemailer = require('nodemailer'); var transport = nodemailer.createTransport({ host: "sandbox.smtp.mailtrap.io", port: 2525, auth: { user: "f924c******a56", pass: "******1b5516a0" } }); message = { from: "[email protected]", to: "[email protected]", subject: "Subject", text: "Hello SMTP Email" } transport.sendMail(message, function(err, info) { if (err) { console.log(err); } else { console.log(info); } });
Nodemailer 的 createTransport 函数指定您要使用哪种方法发送电子邮件。它将连接数据和凭据作为参数。在本例中,由于 SMTP 是首选传输方式,您需要定义一个 SMTP 主机、端口和用于访问主机 SMTP 服务器的凭据密码。
createTrsnsport() 函数返回一个传输对象。它的 sendMail() 方法使用凭据和消息详细信息并将消息发送到所需的收件人。按如下方式运行上述代码 -
PS D:\nodejs\emailapp> node main.js { accepted: [ '[email protected]' ], rejected: [], ehlo: [ 'SIZE 5242880', 'PIPELINING', 'ENHANCEDSTATUSCODES', '8BITMIME', 'DSN', 'AUTH PLAIN LOGIN CRAM-MD5' ], envelopeTime: 749, messageTime: 529, messageSize: 291, response: '250 2.0.0 Ok: queued', envelope: { from: '[email protected]', to: [ '[email protected]' ] }, messageId: '<[email protected]>' }
MailTrap 提供的虚拟 SMTP 服务器为您提供了一个收件箱,可以在其中验证电子邮件事务。
您还可以使用流行的 Gmail 服务通过您的 Node.js 代码发送电子邮件。请注意,您可能需要启用 Gmail 帐户的“安全性较低的应用”设置,或者如果帐户使用 OAuth2 身份验证,则使用身份验证令牌。
var transport = nodemailer.createTransport({ service: 'gmail', auth: { user: '[email protected]', pass: 'yourpassword' } });
Mailgun
您还可以使用 Mailgun API 密钥在您的 Node.js 应用程序中集成电子邮件功能。要添加此功能,请安装以下模块:
npm i mailgun.js form-data
访问 URL signup.mailgun.com 注册免费 Mailgun 帐户并获取公共和私有 API 密钥。
然后,我们初始化 Mailgun 客户端实例并传入 MAILGUN_API_KEY。然后我们定义了一个 sendMail 函数来处理使用 mailgun-js 库发送电子邮件。
const formData = require("form-data"); const Mailgun = require("mailgun.js"); const mailgun = new Mailgun(formData); const mg = mailgun.client({ username: "api", key: process.env.MAILGUN_API_KEY, }); exports.sendMail = (req, res) => { const { toEmail, fromEmail, subject, message } = req.body; mg.messages.create(process.env.MAILGUN_DOMAIN, { from: fromEmail, to: [toEmail], subject: subject, text: message, }); };