使用 Nodemailer 发送邮件

最近在写一个导航项目练手,想通过邮箱验证来实现注册。因为之前使用 python 写过类似的功能,所以用 Node 实现起来也没什么压力(调库师。)

库的名字是 Nodemailer,实现代码如下:

因为用到的次数可能比较多,所以我放在了工具文件内简单的封装了一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 导库
const nodemailer = require('nodemailer');

// 配置发信服务
let transporter = nodemailer.createTransport({
host: 'smtp.exmail.qq.com',// smtp服务器地址,我这是使用的企业邮箱,可以是smtp.qq.com和smtp.163.com等
port: 465, // SMTP 端口
secureConnection: true, // 使用了 SSL
auth: {
user: 'xxx@xx.com', // 用于发送邮件的邮箱账号
pass: 'xxxxxxxxxx', // 密码,这里的密码是你设置的smtp授权码,如果是企业邮箱则可能是邮箱密码。不会的参考该文章:https://zhuanlan.zhihu.com/p/551399559
}
});

module.exports = {
// 参数依次是:收件人邮箱,主题,html内容
mail(email, subject, html) {
transporter.sendMail({
from: '"发信人名称" <xxx@xx.com>', // 这个是发信人的名称和邮箱,注意格式: "xxx" <xxx>
to: email,
subject,
html // 这里的html也可以换成text,参考下面
// 发送text或者html格式
// text: 'Hello world?', // plain text body
// html: '<b>Hello world?</b>' // html body
}, (error, info) => {
if (error) return console.log(error);
console.log('邮件发送成功');
});
}
}

// -------------------------------

// 使用的话就是在其他文件导入使用就行了,当然,你也可以选择不导出直接在一个文件内使用。

const fs = require('fs')
const path = require('path')
const { mail } = require('../utils/index')
// 这里的html我是放在了本地,读取之后对其中的文本进行替换
mail('990320751@qq.com', "这是邮箱的主题", fs.readFileSync(path.resolve(__dirname, './email.html')).toString().replace('${captcha}', code))

最终效果

因为我要留着用所以模板我就不发了,自己写一个也不算难。也可以在网上找自己喜欢的样式。

参考链接:NodeJS Nodemailer发送邮件详解
官方文档:NODEMAILER
获取SMTP授权码教程:QQ邮箱 网易邮箱及企业邮箱开通SMTP/POP3及设置授权码(客户端专用密码)的方法大全

浏览器插件推荐

推荐的是一款翻译插件,插件名:沉浸式翻译。是我在关注的一个UP主的微信公众号看到的。这个插件可以说困了给我送枕头,我最近真的是很需要这款插件。
因为最近看一些英文文档的时候我想试着自己读一下,但是有一些词又不认识,一个个的去查实在浪费时间。而使用浏览器自带的翻译会直接覆盖英文,我就得翻译再切回原文,再翻译再切换原文。。。不多说原视频奉上,正好今天这个库的文档没有中文,想读一下文档的可以安装这款插件试一下。