WANG KE

KE1221

NodeJs 发送邮件

使用nodejs发送邮件

下载nodemailer模块

1
npm i nodemailer

引入模块

1
const nodemailer = require('nodemailer');

创建配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 使用QQ邮箱
let transporter = nodemailer.createTransport({
service: 'QQ',
// SMTP 端口 pop 995
port: 465,
// 使用了 SSL
secureConnection: true,
// 账号
auth: {
// 邮箱
user: '你的邮箱账号',
// 授权码
pass: 'qq邮箱需要使用授权码',
},
});

发送邮件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
transporter.sendMail(option, callback)

/*
option 配置参考
{
// 发件人
from: '"颜良" <ke1221@qq.com>',
// 收件人地址
to: 'ke1014@live.com',
// 主题
subject: '',
// 发送文本信息
text: '',
// 也可以发送网页信息
html: ''
}
*/

使用callback调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//使用callback回调形式调用
transporter.sendMail({
// "颜良" <ke1221@qq.com>
from: '发送者邮箱 必须是当前配置的邮箱',
// 接收人邮箱
to: '对方邮箱',
// 主题 - 标题
subject: '对方显示的标题',
// 如果发送文本内容
text: '要发送的文本信息',
// 也可以发送网页信息
html: '<p>这是网页代码</p>'
}, (err, info) => {
// 如果err不为空,则发送失败
if(err) {
console.log(err)
}
// 反之 则为发送成功
console.log(info)
})

使用promise形式

1
2
3
4
5
6
7
// 捕获错误需使用 try catch
try {
let info = awati transporter.sendMail(option)
console.log(info)
} catch (error) {
console.log(error)
}

成功示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
成功格式如下
{
// 发送成功的邮箱列表,可同时发送多人
accepted: [ 'ke1221@yeah.net' ],
// 失败的邮箱列表
rejected: [],
envelopeTime: 186,
messageTime: 217,
// 内容大小
messageSize: 3724,
// 成功状态
response: '250 OK: queued as.',
// 概要
envelope: {
from: 'ke1221@qq.com',
to: [ 'ke1221@yeah.net' ]
},
// 消息id
messageId: '<c410bec5-e506-0db1-9df3-16aa7c0bac25@qq.com>'
}
*/

其他

当前例子使用QQ邮箱,需在网页版邮箱中设置开启该功能,且获取授权码

其他邮箱邮箱,需配置相关 host 地址以及 port 端口等