- 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 - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - 发送电子邮件
发送电子邮件是任何Node.js应用程序(尤其是 Express 应用程序)中所需的功能之一。在 NPM 存储库中,有各种第三方模块可以促进这一点。Node.js应用程序可以与电子邮件工具集成,其中包含电子邮件 API,例如 Mailgun、MailTrap、Mailjet 等。
在本章中,我们将学习如何借助 nodemailer 模块和 MilTrap API 使用 Node.js 应用程序发送电子邮件。
Nodemailer
Nodemailer 是一个模块,可以为Node.js应用程序发送电子邮件。您可以发送纯文本和 HTML 内容的电子邮件。它还支持添加附件、安全 TLS 交付、内置 SMTP 支持、OAUTH2 身份验证以及许多其他功能。
要开始使用,请安装 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: "from-example@email.com",
to: "to-example@email.com",
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: [ 'to-example@email.com' ],
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: 'from-example@email.com', to: [ 'to-example@email.com' ] },
messageId: '<1d29decd-7903-f5e4-3578-15b1e88f239a@email.com>'
}
MailTrap提供的虚拟SMTP服务器为您提供了一个收件箱,可以在其中验证电子邮件交易。
您还可以使用流行的 Gmail 服务通过您的Node.js码发送电子邮件。请注意,如果帐户使用 OAuth2 身份验证,则您可能需要启用 gmail 帐户的不太安全的应用程序设置或使用身份验证令牌。
var transport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
pass: 'yourpassword'
}
});
Mailgun
您还可以使用 Mailgun API 密钥将电子邮件工具合并到您的Node.js应用程序中。要添加此功能,请安装以下模块 -
通过访问 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,
});
};