以前用Nodejs
作了不少服务端模块, 最近抽空复盘一下, 接下来笔者将介绍如何使用Nodejs
来自动向用户发送邮件.javascript
笔者将详细介绍自动发送邮箱的实现方案, 以及经过一个实际的案例来带你们掌握使用nodejs自动发送邮件, 最后会介绍一些实际的应用场景, 来加深对该方案的理解, 达到学以至用的目的.css
实现自动发送邮件笔者采用了基于Nodejs
生态的nodemailer
, 它能够轻松的帮咱们发送电子邮件, 官网地址: nodemailer.html
之因此选择nodemailer
是由于它提供了很是灵活的自定义配置和安全保障, 好比:前端
Unicode
支持使用任何字符,包括表情符号💪html
SSL/STARTTLS
邮件发送还有不少特色笔者就不一一介绍了. 接下来咱们来看一个笔者简化并翻译的官网案例:java
"use strict";
const nodemailer = require("nodemailer");
// 使用async..await 建立执行函数
async function main() {
// 若是你没有一个真实邮箱的话可使用该方法建立一个测试邮箱
let testAccount = await nodemailer.createTestAccount();
// 建立Nodemailer传输器 SMTP 或者 其余 运输机制
let transporter = nodemailer.createTransport({
host: "smtp.ethereal.email", // 第三方邮箱的主机地址
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: testAccount.user, // 发送方邮箱的帐号
pass: testAccount.pass, // 邮箱受权密码
},
});
// 定义transport对象并发送邮件
let info = await transporter.sendMail({
from: '"Dooring 👻" <dooring2021@163.com>', // 发送方邮箱的帐号
to: "bar@example.com, baz@example.com", // 邮箱接受者的帐号
subject: "Hello Dooring", // Subject line
text: "H5-Dooring?", // 文本内容
html: "欢迎注册h5.dooring.cn, 您的邮箱验证码是:<b>${emailCode}</b>", // html 内容, 若是设置了html内容, 将忽略text内容
});
}
main().catch(console.error);
复制代码
以上代码是发送带有纯文本和HTML
正文的电子邮件的完整示例. 笔者在代码上作了详细的翻译, 咱们能够总结出要想发送邮件, 咱们须要以下3个步骤:node
Nodemailer
传输器 SMTP
或者其余运输机制Message
选项(将什么消息发送给谁)sendMail()
方法传递消息对象宏观的使用流程咱们知道了, 接下来咱们落实到每个技术功能点来实现.咱们须要关注以下几个核心点:webpack
host
auth
Message
选项解答了以上3个问题, 咱们就能灵活的使用Nodemailer
发送自定义邮件了.css3
这里笔者拿网易邮箱来举例. 好比咱们想用咱们本身的网易邮箱给用户发送邮件, 咱们须要先注册一个用于发送邮件的网易邮箱, 好比dooring2021@163.com
. 因为咱们采用SMTP
传输器 , 因此在邮箱主页咱们找到以下选项并设置:git
在该页面下方咱们能够找到对应的host
, 以下:github
关于port和secure, 咱们采用默认配置便可, 设置secure
为true
,表示端口默认使用465
. 详细配置以下:
auth
咱们在上一步的操做中已经涉及到了, 咱们在开启IMAP/SMTP
服务时会提示保存邮箱受权码, 这里的受权码就是auth.pass
的值, auth.user
表示当前受权的邮箱.
消息配置是咱们邮箱服务比较重要的部分, 官方提供了以下几个配置说明:
这里笔者给你们详细介绍一下:
熟悉了以上配置以后咱们基本能够配置知足80%场景的邮件发送需求了. 这里咱们来看一个设置Message
的简单案例:
await transporter.sendMail({
from: '"v6.dooring" <dooring2021@163.com>', // sender address
to: 'xujiang156@qq.com', // list of receivers
subject: 'welcome to use dooring', // Subject line
text: 'Hello world?', // plain text body
html: `欢迎注册v6.dooring, 您的邮箱验证码是:<b>${emailCode}</b>`, // html body
})
复制代码
该案例是使用dooring
邮箱给一个普通用户发送邮箱验证码的场景, 是否是很熟悉呢? 这个场景目前被应用在不少登陆注册相关的场景中. 接下来看看实际的效果:
咱们利用Nodemailer
能够开发不少有意思的产品, 好比:
等等. 关于第二个应用场景, 目前开源有不少漂亮的邮箱模版, 好比
目前笔者也在持续更新H5编辑器 H5-Dooring, 近期更新以下:
以为有用 ?喜欢就收藏,顺便点个赞吧,你的支持是我最大的鼓励!微信搜 “趣谈前端”,发现更多有趣的H5游戏, webpack,node,gulp,css3,javascript,nodeJS,canvas数据可视化等前端知识和实战.