共计 5196 个字符,预计需要花费 13 分钟才能阅读完成。
前言
因为最近本人建站须要增加友链,又不想每次去改动态文件,所以抽出来一个表单,筹备给大家填写本人的信息而后提交到后盾审核,然而我须要一个邮件来告诉大家曾经审核通过了,所以我就须要一个发邮件的插件
nodemailer
[0],当然大佬们曾经晓得了。因为平时 node 玩的比拟少,所以也在这里记录一下
先上效果图
老严你这题目党,说好的定时给女朋友发邮件的小浪漫呢?
咱不焦急哈?前面会讲到,咱们先试下本人手动一步一步的去应用这款插件 nodemailer
筹备工作
咱们发邮件会须要一个 SMTP 受权码!
咱们须要去邮箱外面获取,这里我抉择的是 QQ 邮箱(因为搜到的教程就是 QQ 的)
- 进入 QQ 邮箱
- 抉择账户
.jpg)
- 翻到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务
- POP3/SMTP 服务前面的开启
.jpg)
- 发送信息进行验证
.jpg)
- 复制受权码
.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:` | |
<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> | |
 | |
` | |
} | |
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:` | |
<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> | |
 | |
` | |
} | |
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
留神 startDay
、local
这两个变量记得批改,不然我怕你会被家暴
本人也能够进行自定义一点货色这样会更好
如 邮件的主题 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
发送工夫 EmailHour
、EmialMinminute
能够本人抉择一下 如 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…