node.js中使用nodemailer插件发送邮件 (学习总结)

​## 前言

在做毕业设计时, 我需要在注册时 有一个给用户发送邮件的功能的需求。

需要设置smtp服务

我以QQ邮箱举例:
设置 -> 账户 找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
开启SMTP服务

一定要记住你的授权码,待会会用到。

node 引入 nodemailer

首先 ,你需要下载这个插件

1
$ npm install nodemailer --save

配置 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
// 引用发送邮件插件
const nodeMailer = require('nodemailer')
// 引入证书文件 (获取我的授权码和qq邮箱民)
const credential = require('../config/credentials')

// 创建传输方式
const transporter = nodeMailer.createTransport({
service: 'qq',
auth: {
user: credential.qq.user,
pass: credential.qq.pass // 这个需要你的授权码!!!
}
})

// 注册发送邮件给用户
exports.emailSignUp = function (email, res) {
// 发送信息的内容
let options = {
from: 'xxxxxxx@qq.com', // 这里是你开启SMTP服务的QQ邮箱号
to: email, // 这个是前端注册页面输入的邮箱号
subject: '感谢您在xxxx注册',
html: `<span>xxxx欢迎您的加入!</span>
<a href="http://localhost:8080/">点击</a>`
}

// 发送邮件
transporter.sendMail(options, function (err, msg) {
if (err) {
res.send(err)
// console.log(err)
} else {
res.send('邮箱发送成功!')
// console.log('邮箱发送成功')
}
})
}

比如我访问/email就获取

// 注意这里需要下载body-parser 插件才能使用post获取body内容

1
2
3
4
5
6
router.post('/mail',(req,res)=>{
let mail = req.body.mail
// console.log(mail)
emialserve.emailSignUp(mail,res)
// res.send(mail)
})

前端代码请求: (使用的uni-app框架)

1
2
3
4
5
6
7
8
9
10
uni.request({
url: "http://10.200.120.197:3000/mail",
data: {
mail:this.user
},
method: 'POST',
success: (data) => {
console.log(data)
}
})