1. 以QQ为例子:
第一步:
项目中安装nodemailer
npm i nodemailer
第二步:
引入nodemailer并创建发送邮件的SMTP服务器配置:
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
// logger: true, // 开启基础日志
// debug: true, // 输出SMTP协议级通信细节
service: "qq",
auth: {
user: '你的qq号@qq.com',
pass: 'uhaguownryribafa'
}
});
这个auth中的user就是你的邮箱地址,pass的获取方式如下图:
第三步:
封装接口实现发送功能:
app.post('/send-email', async (req, res) => {
const {email} = req.body
const mailOptions = {
from: '参数', // 发送者邮箱
to: email, // 接收者邮箱
subject: '报信息推送', // 邮件标题
text: '', // 邮件文本内容
// 邮件HTML内容
html:
`
<p>html</p>
`
};
try {
await transporter.sendMail(mailOptions);
return res.status(200).send({ code: 0, message: "'Email sent successfully'" });
} catch (error) {
return res.status(500).send({ code: 1, message: "'Error sending email'" });
}
});
2. 公司内网(个人遇到的):
公司内网实现邮件发送,需要客户提供的有:SMTP服务器地址,SMTP服务器端口号,邮箱的账号和密码,必须要确保SMTP服务已开启,整体上是不改变的,某些配置项需要调整。
// 创建发送邮件的SMTP服务器配置
const transporter = nodemailer.createTransport({
// logger: true, // 开启基础日志
// debug: true, // 输出SMTP协议级通信细节
host: '服务器IP', // SMTP 服务器地址
port: 25, // SMTP 端口号
secure: false,
tls: {
rejectUnauthorized: false // 忽略证书验证 必须开启
},
auth: {
user: '提供的邮箱号',
pass: '邮箱密码'
}
});
这里我遇到的问题是 服务器使用自签名证书,Node.js 默认拒绝此类不安全连接,需要多写一个配置项:
tls: {
rejectUnauthorized: false // 忽略证书验证 必须开启
},
其余的调整参数就可以