Node.js使用第三方插件nodemailer实现邮件发送示例

 更新时间:2022年11月23日 14:39:47   作者:Bertil  
这篇文章主要为大家介绍了Node.js使用第三方插件nodemailer实现邮件发送示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

环境搭建

npm init -y
npm install nodemailer --save

新建文件nodemailer.js

// 邮箱验证
const nodemailer = require('nodemailer'); //发送邮件的node插件
function sendEmail (data){
    let transporter = nodemailer.createTransport({
        host: 'smtp.163.com', 
        port: 465, // SMTP 端口
        auth: {   //发送者的账户和授权码
            user: 'xxx@163.com', //账户
            pass: 'xxx', //smtp授权码,到邮箱设置下获取
        }
    });
    let mailOptions = {
        from: '"Bertil Chan" <xxx@163.com>', // 发送者昵称和地址
        to: data.email, // 接收者的邮箱地址
        subject: '激活验证码', // 邮件主题
        html: data.content
    };
    //发送邮件
    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            return console.log(error);
        }
        console.log('邮件发送成功 ID:', info.messageId);
    }); 
}
let yzm = 'dslk'
let data = {
    email:'xxx@qq.com', // 接收者的邮箱
    // 邮件模板,可自行修改
    content:`
    <head>
    <base target="_blank" />
    <style type="text/css">::-webkit-scrollbar{ display: none; }</style>
    <style id="cloudAttachStyle" type="text/css">#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}</style>
    <style id="blockquoteStyle" type="text/css">blockquote{display:none;}</style>
    <style type="text/css">
        body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}
        td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}
        pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}
        th,td{font-family:arial,verdana,sans-serif;line-height:1.666}
        img{ border:0}
        header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}
        blockquote{margin-right:0px}
        </style>
    </head>
    <body tabindex="0" role="listitem">
    <table width="700" border="0" align="center" cellspacing="0" style="width:700px;">
        <tbody>
        <tr>
            <td>
                <div style="width:700px;margin:0 auto;border-bottom:1px solid #ccc;margin-bottom:30px;">
                    <table border="0" cellpadding="0" cellspacing="0" width="700" height="39" style="font:12px Tahoma, Arial, 宋体;">
                        <tbody><tr><td width="210"></td></tr></tbody>
                    </table>
                </div>
                <div style="width:680px;padding:0 10px;margin:0 auto;">
                    <div style="line-height:1.5;font-size:14px;margin-bottom:25px;color:#4d4d4d;">
                        <strong style="display:block;margin-bottom:15px;">尊敬的用户:<span style="color:#f60;font-size: 16px;"></span>您好!</strong>
                        <strong style="display:block;margin-bottom:15px;">
                            您正在进行<span style="color: red">XXX账号申请</span>操作,请在验证码输入框中输入:<span style="color:#f60;font-size: 24px">${yzm}</span>,以完成操作。
                        </strong>
                    </div>
                    <div style="margin-bottom:30px;">
                        <small style="display:block;margin-bottom:20px;font-size:12px;">
                            <p style="color:#747474;">
                                注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全
                                <br>(工作人员不会向你索取此验证码,请勿泄漏!)
                            </p>
                        </small>
                    </div>
                </div>
                <div style="width:700px;margin:0 auto;">
                    <div style="padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;">
                        <p>此为系统邮件,请勿回复<br>
                            请保管好您的邮箱,避免账号被他人盗用
                        </p>
                        <p>Bertil Chan</p>
                    </div>
                </div>
            </td>
        </tr>
        </tbody>
    </table>
    </body>
`
}
sendEmail(data)

运行

执行命令node nodemailer.js 运行起来,这时候就可以在接收者邮箱看到所发送的邮件了!

扩展:node执行定时任务

如果需要实现定时发送邮件,可以使用node-schedule这个第三方库来完成

  • 安装依赖
npm install node-schedule --save
  • 修改nodemailer.js 文件中的代码
// 定时发送邮件
const nodemailer = require('nodemailer'); //发送邮件的node插件
const schedule = require('node-schedule'); //执行定时任务的插件
function sendEmail (data){
    //这里的内容同上
}
schedule.scheduleJob('10 * * * * *', ()=>{
    sendEmail(data)
});
  • 执行命令node nodemailer.js 运行,这时每分钟的第10秒钟就会自动发送邮件了。

schedule的6个占位符含义

*  *  *  *  *  *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │  |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
  

6个占位符从左到右分别代表:秒、分、时、日、月、周几

'*'表示通配符,匹配任意,当秒是'*'时,表示任意秒数都触发,其它类推

下面可以看看以下传入参数分别代表的意思

每分钟的第30秒触发: '30 * * * * *'
每小时的1分30秒触发 :'30 1 * * * *'
每天的凌晨1点1分30秒触发 :'30 1 1 * * *'
每月的1日1点1分30秒触发 :'30 1 1 1 * *'
2016年的1月1日1点1分30秒触发 :'30 1 1 1 2016 *'
每周1的1点1分30秒触发 :'30 1 1 * * 1'

以上就是Node.js使用第三方插件nodemailer实现邮件发送示例的详细内容,更多关于Node.js nodemailer发送邮件的资料请关注脚本之家其它相关文章!

相关文章

  • nodejs语言实现验证码生成功能的示例代码

    nodejs语言实现验证码生成功能的示例代码

    这篇文章主要介绍了nodejs语言实现验证码生成功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • NodeJS 中Stream 的基本使用

    NodeJS 中Stream 的基本使用

    在 NodeJS 中,我们对文件的操作需要依赖核心模块 fs , fs 中有很基本 API 可以帮助我们读写占用内存较小的文件,这篇文章主要介绍了NodeJS 中Stream 的基本使用,需要的朋友可以参考下
    2018-07-07
  • 使用Node.js自动生成带动态图表的Word文档

    使用Node.js自动生成带动态图表的Word文档

    在现代软件开发中,动态生成 Word 文档是一项非常常见的需求,本文将结合Node.js和ECharts实现自动生成带动态图表的Word文档,感兴趣的可以了解下
    2024-03-03
  • Node.js开发教程之基于OnceIO框架实现文件上传和验证功能

    Node.js开发教程之基于OnceIO框架实现文件上传和验证功能

    这篇文章主要介绍了Node.js开发教程之基于OnceIO框架实现文件上传和验证的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • node.js中的buffer.Buffer.byteLength方法使用说明

    node.js中的buffer.Buffer.byteLength方法使用说明

    这篇文章主要介绍了node.js中的buffer.Buffer.byteLength方法使用说明,本文介绍了buffer.Buffer.byteLength的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Ubuntu 16.04 64位中搭建Node.js开发环境教程

    Ubuntu 16.04 64位中搭建Node.js开发环境教程

    如果想要在Ubuntu 16.04上安装Node.js的话,这篇文章对你来说肯定很重要。Node.js从本质上来说就是一个运行在服务端上的封装好了输入输出流的javascript程序。本文给大家详细介绍了在Ubuntu 16.04 64位搭建Node.js开发环境的步骤,有需要的朋友们可以参考学习。
    2016-10-10
  • node puppeteer爬虫爬取电影网站及生成pdf文档示例

    node puppeteer爬虫爬取电影网站及生成pdf文档示例

    这篇文章主要介绍了node puppeteer爬虫爬取电影网站及生成pdf文档使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • NodeJs项目中关闭ESLint的方法

    NodeJs项目中关闭ESLint的方法

    ESLint是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格。这篇文章主要介绍了NodeJs项目中关闭ESLint的方法,需要的朋友可以参考下
    2018-08-08
  • Nodejs异步回调的优雅处理方法

    Nodejs异步回调的优雅处理方法

    这篇文章主要介绍了Nodejs异步回调的优雅处理方法,本文使用了ES6中的新特性,用一种十分优雅的方式解决了回调问题,需要的朋友可以参考下
    2014-09-09
  • 使用pm2运行node应用的流程步骤

    使用pm2运行node应用的流程步骤

    PM2是一个功能强大的进程管理工具,专为 Node.js 应用设计,它提供了进程管理、日志管理、负载均衡和性能监控等功能,帮助开发者轻松应对生产环境中的各种挑战,本文给大家介绍了使用pm2 运行node应用的流程步骤,需要的朋友可以参考下
    2024-03-03

最新评论