如何使用nodejs自动发送邮件?

简介: 之前用Nodejs做了很多服务端模块, 最近抽空复盘一下, 接下来笔者将介绍如何使用Nodejs来自动向用户发送邮件.笔者将详细介绍自动发送邮箱的实现方案, 以及通过一个实际的案例来带大家掌握使用nodejs自动发送邮件, 最后会介绍一些实际的应用场景, 来加深对该方案的理解, 达到学以致用的目的.

网络异常,图片无法展示
|


之前用Nodejs做了很多服务端模块, 最近抽空复盘一下, 接下来笔者将介绍如何使用Nodejs来自动向用户发送邮件.


笔者将详细介绍自动发送邮箱的实现方案, 以及通过一个实际的案例来带大家掌握使用nodejs自动发送邮件, 最后会介绍一些实际的应用场景, 来加深对该方案的理解, 达到学以致用的目的.


实现方案



实现自动发送邮件笔者采用了基于Nodejs生态的nodemailer, 它可以轻松的帮我们发送电子邮件, 官网地址: nodemailer.


网络异常,图片无法展示
|


之所以选择nodemailer是因为它提供了非常灵活的自定义配置和安全保障, 比如:


  • 具有零依赖关系的单一模块, 代码容易审核,没有死角
  • Unicode支持使用任何字符,包括表情符号💪
  • 邮件内容既支持普通文本, 还支持自定义html
  • 支持自定义附件
  • 支持安全可靠的SSL/STARTTLS邮件发送
  • 支持自定义插件处理邮件消息


还有很多特点笔者就不一一介绍了. 接下来我们来看一个笔者简化并翻译的官网案例:

"use strict";
constnodemailer=require("nodemailer");
// 使用async..await 创建执行函数asyncfunctionmain() {
// 如果你没有一个真实邮箱的话可以使用该方法创建一个测试邮箱lettestAccount=awaitnodemailer.createTestAccount();
// 创建Nodemailer传输器 SMTP 或者 其他 运输机制lettransporter=nodemailer.createTransport({
host: "smtp.ethereal.email", // 第三方邮箱的主机地址port: 587,
secure: false, // true for 465, false for other portsauth: {
user: testAccount.user, // 发送方邮箱的账号pass: testAccount.pass, // 邮箱授权密码    },
  });
// 定义transport对象并发送邮件letinfo=awaittransporter.sendMail({
from: '"Dooring 👻" <dooring2021@163.com>', // 发送方邮箱的账号to: "bar@example.com, baz@example.com", // 邮箱接受者的账号subject: "Hello Dooring", // Subject linetext: "H5-Dooring?", // 文本内容html: "欢迎注册h5.dooring.cn, 您的邮箱验证码是:<b>${emailCode}</b>", // html 内容, 如果设置了html内容, 将忽略text内容  });
}
main().catch(console.error);

以上代码是发送带有纯文本和HTML正文的电子邮件的完整示例. 笔者在代码上做了详细的翻译, 我们可以总结出要想发送邮件, 我们需要如下3个步骤:


  • 创建Nodemailer传输器 SMTP 或者其他运输机制
  • 设置 Message 选项(将什么消息发送给谁)
  • 使用先前创建的传输器的sendMail()方法传递消息对象


宏观的使用流程我们知道了, 接下来我们落实到每一个技术功能点来实现.我们需要关注如下几个核心点:


  • 如何设置 host
  • 如何设置 auth
  • 如何配置 Message 选项


解答了以上3个问题, 我们就能灵活的使用Nodemailer发送自定义邮件了.


如何设置host, port, secure



这里笔者拿网易邮箱来举例. 比如我们想用我们自己的网易邮箱给用户发送邮件, 我们需要先注册一个用于发送邮件的网易邮箱, 比如dooring2021@163.com. 由于我们采用SMTP传输器 , 所以在邮箱主页我们找到如下选项并设置:


网络异常,图片无法展示
|


在该页面下方我们可以找到对应的host, 如下:


网络异常,图片无法展示
|


关于portsecure, 我们采用默认配置即可, 设置securetrue,表示端口默认使用465. 详细配置如下:


网络异常,图片无法展示
|


如何设置auth



auth我们在上一步的操作中已经涉及到了, 我们在开启IMAP/SMTP服务时会提示保存邮箱授权码, 这里的授权码就是auth.pass的值, auth.user表示当前授权的邮箱.


如何设置Message



消息配置是我们邮箱服务比较重要的部分, 官方提供了如下几个配置说明:


网络异常,图片无法展示
|


这里笔者给大家详细介绍一下:


  • from 发件人的电子邮件地址。所有电子邮件地址都可以是纯'sender@server.com“或格式化”‘发送者名称’sender@server.com'
  • to 逗号分隔的列表或收件人的电子邮件地址的排列
  • cc 逗号分隔的列表或将显示在“抄送”字段中的收件人电子邮件地址数组
  • bcc 逗号分隔的列表或将显示在“密件抄送:”字段中的收件人电子邮件地址数组
  • subject 电子邮件的主题
  • text 消息的文本内容
  • html 消息的html内容, 如果定义了html, 将忽略text
  • attachments 附件内容


熟悉了以上配置之后我们基本可以配置满足80%场景的邮件发送需求了. 这里我们来看一个设置Message的简单案例:


awaittransporter.sendMail({
from: '"v6.dooring" <dooring2021@163.com>', // sender addressto: 'xujiang156@qq.com', // list of receiverssubject: 'welcome to use dooring', // Subject linetext: 'Hello world?', // plain text bodyhtml: `欢迎注册v6.dooring, 您的邮箱验证码是:<b>${emailCode}</b>`, // html body})

该案例是使用dooring邮箱给一个普通用户发送邮箱验证码的场景, 是不是很熟悉呢? 这个场景目前被应用在很多登录注册相关的场景中. 接下来看看实际的效果:

网络异常,图片无法展示
|


扩展



我们利用Nodemailer可以开发很多有意思的产品, 比如:


  • 在线邮箱客户端
  • 定制邮箱模版
  • 邮箱验证中枢系统
  • 邮箱群发助手


等等. 关于第二个应用场景, 目前开源有很多漂亮的邮箱模版, 比如



网络异常,图片无法展示
|



目录
打赏
0
0
0
0
22
分享
相关文章
node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
127 0
node使用nodemailer发送邮件
node使用nodemailer发送邮件
Node.js使用Nodemailer发送邮件
Node.js使用Nodemailer发送邮件
470 0
Node.js使用Nodemailer发送邮件
node 使用qq邮箱发送邮件 进行验证码校验
node 使用qq邮箱发送邮件 进行验证码校验
234 0
Node.js(三)发送邮件模块(第三方模块)
Node.js(三)发送邮件模块(第三方模块)
121 0
教你node.js 模拟自动发送邮件验证码
我们在开发网站时,发送验证码的功能是必定会遇到的,但发送短信验证码是需要付费的,那么邮箱验证码就是一个白嫖的好办法,今天就来教大家用node如何自动发送邮箱验证码。 接下来跟着我的步骤走,就能轻松完成邮箱的自动发送
458 0
教你node.js 模拟自动发送邮件验证码
关于nodejs的几个干货(读中文文件编码问题/发送邮件/定时任务)
关于nodejs读取中文文件真是折腾了不少时间,网上各种方案,最后没有一个适用我,好在解决了。 下面的三个知识点都是从项目中抽出的,要单独运行脚本的话需要用全局模式来安装模块,比如安装中文转换模块(后续其它的也需要这么做): npm install -g iconv-lite  npm i...
1775 0
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
1月前
|
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
179 26

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等