栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

实战:使用nodejs的第三方插件nodemailer实现邮件发送

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实战:使用nodejs的第三方插件nodemailer实现邮件发送

  • 环境搭建
npm init -y
npm install nodemailer  
  • 新建文件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" ', // 发送者昵称和地址
        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:`
    
    
    ::-webkit-scrollbar{ display: none; }
    #divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}
    blockquote{display:none;}
    
        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}
        
    
    
    
尊敬的用户:您好! 您正在进行XXX账号申请操作,请在验证码输入框中输入:${yzm},以完成操作。

注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全
(工作人员不会向你索取此验证码,请勿泄漏!)

此为系统邮件,请勿回复
请保管好您的邮箱,避免账号被他人盗用

Bertil Chan

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

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

  • 安装依赖
npm install node-schedule
  • 修改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'
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/513220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号