前言

因为最近本人建站须要增加友链,又不想每次去改动态文件,所以抽出来一个表单,筹备给大家填写本人的信息而后提交到后盾审核,然而我须要一个邮件来告诉大家曾经审核通过了,所以我就须要一个发邮件的插件 nodemailer[0] ,当然大佬们曾经晓得了。因为平时node玩的比拟少,所以也在这里记录一下

先上效果图

老严你这题目党 ,说好的定时给女朋友发邮件的小浪漫呢?
咱不焦急哈?前面会讲到,咱们先试下本人手动一步一步的去应用这款插件 nodemailer

筹备工作

咱们发邮件会须要一个 SMTP 受权码!
咱们须要去邮箱外面获取,这里我抉择的是QQ邮箱(因为搜到的教程就是QQ的)

  1. 进入QQ邮箱

  1. 抉择账户

.jpg)

  1. 翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

  1. POP3/SMTP服务前面的开启

.jpg)

  1. 发送信息进行验证

.jpg)

  1. 复制受权码

.jpg)

配置

stop 就是这里,别滑太快了

创立一个文件夹

目录名各位请便

创立入口文件

我这里命名时 app.js 各位自便

初始化

npm init -y

装置

npm install nodemailer

老严这里的 nodemailer 装置的是 4.4.0 的版本

package.js

实现之后大略长这样

{  "name": "nodeMailDemo",  "version": "1.0.0",  "description": "",  "main": "app.js",  "scripts": {    "test": "echo \"Error: no test specified\" && exit 1",    // dev 这是老严本人加上去的哈    "dev":"node app.js"  },  "keywords": [],  "author": "",  "license": "ISC",  "dependencies": {    "nodemailer": "^4.4.0"  }}

come baby

大家看黑板,当初这里是重点了哈,集中注意力
进入到 app.js 中

引入

const nodemailer = require('nodemailer'); 

创立

// 创立 nodemailer 配置let transporter = nodemailer.createTransport({    //反对列表: https://nodemailer.com/smtp/well-known/    service: 'QQ', // 老严用的是 QQ    port: 465, // SMTP 端口 这个不必管    secureConnection: true,     auth: {        user: '你的邮箱@qq.com',        pass: '这里填写咱们刚刚获取到的smtp受权码',     }});

发送内容

let mailOptions = {    from: '"NickName" <你的邮箱@qq.com>',     to: '接管人的邮箱',     subject: '发文章的题目', /    text: '这里填写你发送的内容'    // html:'这里也能够写html'};

执行发送

transporter.sendMail(mailOptions, (error, info) => {    if (error) {        return console.log(error);    }    console.log('邮件发送胜利 ID:', info.messageId);});

总共才 20 来行的代码到底行不行呢?

node app.js

老严的配置

const nodemailer = require('nodemailer'); //发送邮件的node插件function sendEmail (data){    let transporter = nodemailer.createTransport({        service: 'QQ', // 发送者的邮箱厂商,反对列表:https://nodemailer.com/smtp/well-known/        port: 465, // SMTP 端口        secureConnection: true, // SSL平安链接        auth: {   //发送者的账户明码            user: '2407488005@qq.com', //账户            pass: 'smtp 受权码', //smtp受权码,到邮箱设置下获取        }    });    let mailOptions = {        from: '"悲伤日记" <2407488005@qq.com>', // 发送者昵称和地址        to: data.email, // 接收者的邮箱地址        subject: '悲伤日记 | 友链替换申请审核后果', // 邮件主题        html: data.content    };    //发送邮件    transporter.sendMail(mailOptions, (error, info) => {        if (error) {            return console.log(error);        }        console.log('邮件发送胜利 ID:', info.messageId);    }); }// 这里是 nickName, createTime, link 通过 api 返回的参数进行动静填写的let nickName, createTime, link;nickName =  '严先生的博客'createTime = '2021-01-26 15:20';link = 'http://blog.lovemysoul.vip'let data = {    email:'491324693@qq.com',    content:`![](http://blog.lovemysoul.vip/favicon.ico)        <p style="text-indent: 2em;">敬爱的 ${ nickName } </p>        <p style="text-indent: 2em;">您在${ createTime } 申请的 ${ link } 替换友链曾经审核通过!曾经主动创立胜利!能够返回 <a href="http://blog.lovemysoul.vip/Friendship.html">悲伤日记</a> 进行查看。感谢您的反对!</p>        <p style="text-indent: 2em;">祝您工作顺利,心想事成</p>        <p style="text-align: right;">—— 悲伤日记</p>        <p>如有疑难能够关注悲伤日记微信公众号进行协调 </p>        ![](http://blog.lovemysoul.vip/_assets/beishang.0aa26ed3.jpg)    `}sendEmail(data) 

执行发送

node app.js# or npm run dev

Di~ 收到了!


关上一看

开始定时工作

因为咱们执行完发送邮件之后,这个工作执行实现就曾经敞开了。咱们须要一个定时工作来给它始终跑 node-schedule

装置

npm install node-schedule

应用

// 引入var schedule = require('node-schedule');// 定时执行schedule.scheduleJob('10 * * * * *', ()=>{    sendEmail(data)});

schedule 解说

援用一名博主的解说 《Nodejs学习笔记(十二)--- 定时工作(node-schedule)》[2]

*  *  *  *  *  *┬ ┬ ┬ ┬ ┬ ┬│ │ │ │ │  |│ │ │ │ │ └ 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'

咱们执行的是每分钟的第10秒钟发送邮件

看看邮箱

全副代码

const nodemailer = require('nodemailer'); //发送邮件的node插件var schedule = require('node-schedule');function sendEmail (data){    let transporter = nodemailer.createTransport({        service: 'QQ',         port: 465,         secureConnection: true,         auth: {              user: '2407488005@qq.com',             pass: '受权码',         }    });    let mailOptions = {        from: '"悲伤日记" <2407488005@qq.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 nickName, createTime, link ;nickName =  '严先生的博客'createTime = '2021-01-26 15:20';link = 'http://blog.lovemysoul.vip'let data = {    email:'491324693@qq.com',    content:`![](http://blog.lovemysoul.vip/favicon.ico)        <p style="text-indent: 2em;">敬爱的 ${ nickName } </p>        <p style="text-indent: 2em;">您在${ createTime } 申请的 ${ link } 替换友链曾经审核通过!曾经主动创立胜利!能够返回 <a href="http://blog.lovemysoul.vip/Friendship.html">悲伤日记</a> 进行查看。感谢您的反对!</p>        <p style="text-indent: 2em;">祝您工作顺利,心想事成</p>        <p style="text-align: right;">—— 悲伤日记</p>        <p>如有疑难能够关注悲伤日记微信公众号进行协调 </p>        ![](http://blog.lovemysoul.vip/_assets/beishang.0aa26ed3.jpg)    `}schedule.scheduleJob('10 * * * * *', ()=>{    sendEmail(data)});

想要给女朋友整点小浪漫?

后面的都会了? 想要玩这个那还不简略,持续找轮子,老严在 GitHub 上找到了一个完满的 demo 亲测无效

demo : https://github.com/Vincedream...

间接克隆下来

git clone https://github.com/Vincedream/NodeMail.git&cd NodeMail

装置依赖

npm install

批改配置文件

进入到根目录的 main.js 而后批改刚刚咱们说的配置
全副填写进去之后

node main.js

留神 startDaylocal 这两个变量记得批改,不然我怕你会被家暴

本人也能够进行自定义一点货色这样会更好
如 邮件的主题 EmailSubject

我贴一下模板 感觉有点过分

let msgTitle = ["敬爱滴小宝贝!星期一了又是元气满满的一天 taim i'ngra leat",                "康康小宝贝!熬过了昨天和一上午,还有三天半放假 I love you",                "冲冲冲本周曾经过完1/2了!明天也要要开开心心的噢 je t'aime",                "周四了!不论你在哪里,我永远都在你转身的间隔。 ich liebe dich",                "哈哈哈,还有半天就要放假了!快坑老公吃大餐吧   se agapo",                "你老公在旁边,间接喊他说爱你!哼"]let EmailSubject = msgTitle[new Date().getDay() - 1]

独身狗暴击 * 9999999

发送工夫 EmailHourEmialMinminute 能够本人抉择一下 如13:14 ,5:20 等等 我就不在这凑热闹了

执行一下这骚操作

node main.js

.jpg)

后果

.png)

注解地址

[0] https://github.com/nodemailer...

[1] https://github.com/node-sched...

[2] https://www.cnblogs.com/zhong...