• node.js使用Nodemailer发送邮件


    引言

    • 常常看到一些网站有邮箱获取验证码验证注册或者修改密码等,今天也来了解一下在nodejs + express怎么发送电子邮件。使用模块Nodemailer。这里以qq邮箱举例子。

    安装模块

     npm install Nodemailer --save
    

    创建一个SMTP客户端配置

     //引入模块 nodemailer
     const nodemailer = require('nodemailer')
    
     const config = {
        // 163邮箱 为smtp.163.com
        host: 'smtp.qq.com',//这是qq邮箱
        //端口
        port: 465,
        auth: {
            // 发件人邮箱账号
            user: '651762920@qq.com', 
            //发件人邮箱的授权码 这里可以通过qq邮箱获取 并且不唯一
            pass: 'xxxxxxxxx'  
        }
     }
    

    创建一个SMTP客户端配置对象

    即把 上述的客户端配置作为nodemailer.createTransport方法参数传递进去即可

    const transporter = nodemailer.createTransport(config)
    

    创建一个收件人对象

    即填写发件人和收件人的一些信息,以及发送的内容

     const mail = {
        // 发件人 邮箱  '昵称<发件人邮箱>'
        from: '车神-黄杰<651762920@qq.com>',
        // 主题
        subject: '激活验证码',
        // 收件人 的邮箱 可以是其他邮箱 不一定是qq邮箱
        to: 'xxxxxx',
        // 内容
        text: `您的激活验证码为:666888, 请24小时内有效,请谨慎保管。` ,
        //这里可以添加html标签
        html: '<a href="https://www.cnblogs.com/HJ412/">车神-黄杰</a>'
     }
    
    

    发送邮件 调用 transporter.sendMail(mail, callback)

    @params mail 收件人配置对象
    @params callback 回调函数

     function sendEmail(mail){
        transporter.sendMail(mail, function(error, info){
            if(error) {
                return console.log(error);
            }
            transporter.close()
            console.log('mail sent:', info.response)
        })
     }
    

    获取授权码

    打开pc端qq邮箱,点击设置,再点击帐户

    往下拉 可开启POP3/SMTP服务 根据提示即可获取qq邮箱授权码

    完整代码

    我把这些代码封装成一个nodemailer.js文件

     //引入模块 nodemailer
     const nodemailer = require('nodemailer')
    
     const config = {
        // 163邮箱 为smtp.163.com
        host: 'smtp.qq.com',//这是qq邮箱
        //端口
        port: 465,
        auth: {
            // 发件人邮箱账号
            user: '651762920@qq.com', 
            //发件人邮箱的授权码 这里可以通过qq邮箱获取 并且不唯一
            pass: 'etrdgnwpniclsbfih'  
        }
     }
    
     const transporter = nodemailer.createTransport(config)
    
      const mail = {
        // 发件人 邮箱  '昵称<发件人邮箱>'
        from: '车神-黄杰<651762920@qq.com>',
        // 主题
        subject: '激活验证码',
        // 收件人 的邮箱 可以是其他邮箱 不一定是qq邮箱
        to: '1928611412@qq.com',
        // 内容
        text: `您的激活验证码为:${checkCode}, 请24小时内有效,请谨慎保管。` ,
        //这里可以添加html标签
        html: '<a href="https://www.cnblogs.com/HJ412/">车神-黄杰</a>'
     }
    
     transporter.sendMail(mail, function(error, info){
        if(error) {
            return console.log(error);
        }
        transporter.close()
        console.log('mail sent:', info.response)
     })
    
    

    运行 nodemailer.js即可收到 邮件

    注意

    有时候发送成功,但收件人收不到邮件,可能因为网络问题,也有可能对方把它作为垃圾邮件了,在对方的垃圾邮箱可查找发送的邮箱。不要拿我的授权码以及邮箱测试,因为我的授权码随时会变。

  • 相关阅读:
    dedecms 5.7 站点文件从本地子目录上传到远程根目录后找不到模板的解决方案
    Dedecms实现"文章标题2级栏目1级栏目网站名"
    织梦安装在子目录会出现问题的解决技巧集合
    ASP.NET三层架构中数据层数据访问类部分代码
    织梦DEDECMS缩短URL路径长度的方法
    CSS各种属性全集
    css和js引用图片路径
    ASP.Net中FileUpLoad控件内容清空
    WampServer的配置
    asp.net 中的 callback
  • 原文地址:https://www.cnblogs.com/HJ412/p/11560364.html
Copyright © 2020-2023  润新知