600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > gmail api 发送邮件_Node定时自动发邮件功能

gmail api 发送邮件_Node定时自动发邮件功能

时间:2018-12-25 05:16:59

相关推荐

gmail api 发送邮件_Node定时自动发邮件功能

功能:利用Node每天定时发送邮件给指定邮箱。

需要的npm包:

nodemailernode-schedule

实现步骤:

配置 nodemailer发送邮件开启定时邮件发送

代码初始化:

新建一个文件夹用于存储代码,然后用命令行打开该文件夹执行一下命令安装相关依赖

# 生成 package.json 文件npm init -y# 安装 nodemailer 和 node-schedulenpm i nodemailer node-schedule -S

新建 index.js 作为程序入口文件

// index.js"use strict";const nodemailer = require("nodemailer");const schedule = require("node-schedule");​async function main() {let transporter = nodemailer.createTransport({host: "",port: 465, // SMTP 端口secure: true, // true for 465, false for other portsauth: {user: 'xxxx@', // 发送者的邮箱,我这里选择 qq 邮箱pass: 'xxxxx', // SMTP 授权码,可以去具体的邮箱设置里面获取},});​// send mail with defined transport objectlet info = await transporter.sendMail({from: 'Fred Foo <xxx@>', // 发送者的昵称和邮箱地址to: "xxx@, xxx@", // 接收者,可写多个接受者subject: "Hello ✔", // 邮件主题text: "老板: 下班来我办公司一趟!", // 主体html: 'html', // 可以发送html});​console.log("Message sent: %s", info.messageId);// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@>​// Preview only available when sending through an Ethereal accountconsole.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...}​main()

运行上面的js文件即可发送邮件了

node index.js​Message sent: <90fcd98d-d4fe-520e-0a5c-3a3d1b315091@>Preview URL: false

利用 node-schedule 实现定时发送

示例代码:

var schedule = require("node-schedule"); ​//1. 确定的时间执行var date = new Date(,12,10,15,50,0); schedule.scheduleJob(date, function(){console.log("执行任务");});​//2. 秒为单位执行 //比如:每5秒执行一次var rule1= new schedule.RecurrenceRule(); var times1 = [1,6,11,16,21,26,31,36,41,46,51,56]; rule1.second = times1; schedule.scheduleJob(rule1, function(){console.log("执行任务"); });​//3.以分为单位执行//比如:每5分种执行一次var rule2= new schedule.RecurrenceRule(); var times2 = [1,6,11,16,21,26,31,36,41,46,51,56]; rule2.minute = times2; schedule.scheduleJob(rule2, function(){console.log("执行任务"); }); ​//4.以天单位执行//比如:每天6点30分执行var rule = new schedule.RecurrenceRule();rule.dayOfWeek = [0, new schedule.Range(1, 6)];rule.hour = 6;rule.minute =30;var j = schedule.scheduleJob(rule, function(){console.log("执行任务");getData();});

配合上面下发邮件的代码,我们来实现每5秒发送一次邮件

// index.js"use strict";const nodemailer = require("nodemailer");const schedule = require("node-schedule");​async function main() {let transporter = nodemailer.createTransport({host: "",port: 465, // SMTP 端口secure: true, // true for 465, false for other portsauth: {user: 'xxxx@', // 发送者的邮箱,我这里选择 qq 邮箱pass: 'xxxxx', // SMTP 授权码,可以去具体的邮箱设置里面获取},});let info = await transporter.sendMail({from: 'Fred Foo <xxx@>', // 发送者的昵称和邮箱地址to: "xxx@, xxx@", // 接收者,可写多个接受者subject: "Hello ✔", // 邮件主题text: "老板: 下班来我办公司一趟!", // 主体html: 'html', // 可以发送html});​console.log("Message sent: %s", info.messageId);// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@>console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...}​// 每五秒发送一次var rule = new schedule.RecurrenceRule() var times = [1,6,11,16,21,26,31,36,41,46,51,56]rule.second = times schedule.scheduleJob(rule1, function(){main() })

这样就实现了node定时发送邮件啦,还可以利用模板引擎自定义html当做邮件内容。

下期文章准备更新每天定期发送天气邮件,利用阿里的天气api实现获取每日天气信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。