记录使用nodemailer,让邮箱发送邮件,实现邮箱验证

本文档介绍了如何利用nodemailer模块在Node.js中设置并使用SMTP来发送邮件,包括网易和QQ邮箱的配置步骤。通过创建Express应用,安装所需依赖,并配置SMTP服务和端口,实现了邮件的发送功能。邮件内容可以包含文本、HTML及附件。示例代码展示了如何处理参数校验、错误反馈以及邮件发送的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录使用nodemailer,让邮箱发送邮件,实现邮箱验证。

1.要先去邮箱官网设置开启smtp

网易的设置

在这里插入图片描述

QQ邮箱设置,拉到最下面

在这里插入图片描述

简单的搭了个express。

cnpm install nodemailer --save
var express= require('express');
var app=express();
const nodemailer = require('nodemailer');
//这个是nodemail支持的邮箱类型,后面是端口,目前只试了qq邮箱和网易邮箱,其他没试过
const serviceType = {
    "126":465,
    "163":25,
    "1und1":465,
    "AOL":465,
    "DebugMail":465,
    "DynectEmail":465,
    "FastMail":465,
    "GandiMail":465,
    "Gmail":465,
    "Godaddy":465,
    "GodaddyAsia":465,
    "GodaddyEurope":465,
    "hot.ee":465,
    "Hotmail":465,
    "iCloud":465,
    "mail.ee":465,
    "Mail.ru":465,
    "Maildev":465,
    "Mailgun":465,
    "Mailjet":465,
    "Mailosaur":465,
    "Mandrill":465,
    "Naver":465,
    "OpenMailBox":465,
    "Outlook365":465,
    "Postmark":465,
    "QQ":465,
    "QQex":465,
    "SendCloud":465,
    "SendGrid":465,
    "SendinBlue":465,
    "SendPulse":465,
    "SES":465,
    "SES-US-EAST-1":465,
    "SES-US-WEST-2":465,
    "SES-EU-WEST-1":465,
    "Sparkpost":465,
    "Yahoo":465,
    "Yandex":465,
    "Zoho":465,
    "qiye.aliyun":465,
}
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.post("/postMail",(req,res)=>{
    if(req.body){
        const {emailType,email,message,emailTitle} = req.body;
        if(!emailType || !email || !message || !emailTitle){
            const p = !emailType?'emailType':!email?"email":!message?"message":!emailTitle?"emailTitle":"丢雷楼某";
            res.json({
                code:0,
                msg:"参数错误,缺少必要参数["+p+"]"
            })
            return 
        }
        let transporter = nodemailer.createTransport({
            service:emailType, // 使用了内置传输发送邮件 查看支持列表:https://nodemailer.com/smtp/well-known/
            port: serviceType[emailType], 
            secureConnection: true, 
            auth: {
            user: 'myEmail@qq.com',//这个是发送的邮箱,qq就qq.com,163就163.com
            pass: 'smtp',//这个是授权码,
            }
        });
        
        let mailOptions = {
            from: '"阿伟"<myEmail@qq.com>', 
            to: email, //对方的邮箱
            subject: emailTitle, //标题
            //文本格式
            text: message,//内容
            //也可以是用html的格式
            //html: "<h1>"+message+"</h1>",
            //附件内容,不用可注释掉
            attachments: [{
                filename: '打球.mp4',
                path: './1.mp4'
            },
            {
                filename: '睡觉.mp4',
                path: './2.mp4'
            },
            {
                filename: '漆美芳.jpg',
                path: './q.jpg'
            },
            {
                filename: '我全都要.gif',
                path: './want.gif'
            },
            {
                filename: 'c测试发送附件.text',
                content: '自定义内容'
            }]
        };
        
        transporter.sendMail(mailOptions, (error, info) => {
            if (error) {
                res.json({
                    code:0,
                    msg:"发送失败!",
                    error
                })
	            return console.log(error);
            }
            res.json({
                code:1,
                msg:"发送成功!",
                reponse:info
            })
        });
    }else{
        res.json({
            code:0,
            msg:"滚",
        })
    }
})

var server = app.listen(3000, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log('项目启动!! http://%s:%s', host, port);
})

接收情况

QQ邮箱
在这里插入图片描述
网易
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值