Node 发送邮件依赖包
shell
npm i nodemailer -s-d
npm i nodemailer-smtp-transport -s-d发送一个随机验证码
emailService.js
js
// emailService.js
// 引入 nodemailer 和 nodemailer-smtp-transport
const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
// SMTP 配置
const smtpDefaultConfig = {
host: 'smtp.163.com',
port: 465, // 465 QQ邮件服务所占用的端口
secure: true, // 使用 SSL 协议 true for 465, false for other ports
secureConnection: false, //是否使用对 https 协议的安全连接
auth: {
user: 'XXX@163.com', //开启 smtp 服务的发件人邮箱
pass: 'XXX' //SMTP 服务授权码
}
};
/**
* 创建并导出一个邮件服务对象
*/
module.exports = {
// 发送邮件
sendMail: async function (mailOptions, smtpConfig = smtpDefaultConfig) {
try {
// 创建邮件发送器
const transporter = nodemailer.createTransport(smtpTransport(smtpConfig));
// 使用邮件发送器发送邮件
const info = await transporter.sendMail(mailOptions);
console.log('Email sent: ', info.response);
return info;
} catch (error) {
console.error('Error sending email: ', error);
throw error;
}
}
};app.js
js
// app.js
const path = require('path')
const emailService = require('./emailService');
const FORM = '"花生炖琳啃 👻" <reinf163@163.com>'
// 生成随机数
function generateRandomList(minScore = 0, maxScore = 100, length = 10) {
return Array.from({ length }, () => {
return Math.floor(Math.random() * (maxScore - minScore + 1)) + minScore;
}).join('');
}
const initHTMLStringCode = (code) => {
return `
<h1>欢迎注册 xx系统</h1>
<br>
<h1>验证码:${code}</h1>
<p>如果不是您本人操作,请无视此邮件</p>
`
}
async function main() {
//生成6位随机验证码
const code = generateRandomList(0,9,6)
const files = [
{
filename: 'xxx.png',
path: path.resolve(__dirname, 'img.png'),
// cid: '01', // 文件的唯一标识正文引用 `<img src="cid:01"/>`
},
{ filename: 'xxx.png', path: 'https://nodemailer.com/nm_logo_200x136.png' }
]
const mail = {
from: FORM,
to: '123123@qq.com',
subject: 'Hello ~',
html: initHTMLStringCode(code),
// attachments: files // 附件
}
// 发送邮件
emailService.sendMail(mail).then(() => {
console.log('发送成功');
}).catch((error) => { console.error('错误: ', error) });
}
main().catch(err => console.log(err))