Skip to content

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))