国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Express實現(xiàn)定時發(fā)送郵件

這篇具有很好參考價值的文章主要介紹了Express實現(xiàn)定時發(fā)送郵件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在開發(fā)中我們有時候需要每隔 一段時間發(fā)送一次電子郵件,或者在某個特定的時間進行發(fā)送郵件
無需手動去操作,基于這樣的情況下我們需要用到了定時任務(wù),一般可以寫個定時器,來完成相應(yīng)的需求,在 node.js 中自已實現(xiàn)也非常容易,接下來要介紹的是node-schedule來完成定時任務(wù)

用express.js實現(xiàn) 每個星期三中午12點 發(fā)送郵件給某個用戶

1.安裝第三方庫 Node Schedule、nodemailer

npm i -s node-schedule nodemailer

2.新建一個 TaskScheduler 定時任務(wù)類

// 引入 node-schedule 模塊
const schedule = require('node-schedule');

/*
* TODO:編寫 Cron 表達式時,有五個占位符可以使用,分別表示分鐘、小時、日期、月份和星期幾。
*      每個占位符可以使用特定的值、值范圍、逗號分隔的值列表和通配符等等
*
*       * * * * * *
*       | | | | | |
*       | | | | | day of week
*       | | | | month
*       | | | day of month
*       | | hour
*       | minute
*       second ( optional )
*
*      示例 Cron 表達式:
*           每分鐘的第30秒觸發(fā): 30 * * * * *
*           每小時的1分30秒觸發(fā) :30 1 * * * *
*           每天的凌晨1點1分30秒觸發(fā) :30 1 1 * * *
*           每月的1日1點1分30秒觸發(fā) :30 1 1 1 * *
*           每年的1月1日1點1分30秒觸發(fā) :30 1 1 1 1 *
*           每周1的1點1分30秒觸發(fā) :30 1 1 * * 1
* */

// 創(chuàng)建一個任務(wù)調(diào)度器類
class TaskScheduler {
    // 構(gòu)造函數(shù),接受 cron 表達式和要執(zhí)行的任務(wù)作為參數(shù)
    constructor(cronExpression, task) {
        // 將傳入的 cron 表達式和任務(wù)保存為成員變量
        this.cronExpression = cronExpression;
        this.task = task;
        // 初始化 job 為 null
        this.job = null;
    }

    // 啟動任務(wù)
    start() {
        // 如果當(dāng)前沒有正在運行的任務(wù),則創(chuàng)建新的任務(wù)
        if (!this.job) {
            this.job = schedule.scheduleJob(this.cronExpression, this.task);
            console.log(`定時任務(wù)啟動: ${this.cronExpression}`);
        }
    }

    // 停止任務(wù)
    stop() {
        // 如果當(dāng)前有正在運行的任務(wù),則取消任務(wù)并將 job 設(shè)為 null
        if (this.job) {
            this.job.cancel();
            console.log(`定時任務(wù)停止: ${this.cronExpression}`);
            this.job = null;
        }
    }
}

// 導(dǎo)出任務(wù)調(diào)度器類
module.exports = TaskScheduler;

3.創(chuàng)建一個發(fā)送郵件的方法

const nodemailer = require("nodemailer");
/**
 * 郵箱發(fā)送
 *
 * @param  {string}  to 對方郵箱
 * @param  {string}  content 發(fā)送內(nèi)容
 */

// 創(chuàng)建Nodemailer傳輸器 SMTP 或者 其他 運輸機制
let transporter = nodemailer.createTransport(
    {
        service: 'QQ', // 使用內(nèi)置傳輸發(fā)送郵件 查看支持列表:https://nodemailer.com/smtp/well-known/
        port: 465, // SMTP 端口
        secureConnection: true, // 使用 SSL
        auth: {
            user: '1840354092@qq.com', // 發(fā)送方郵箱的賬號
            pass: '******', // 郵箱授權(quán)密碼
        }
    }
);

exports.send = (to, content) => {
    return new Promise((resolve, reject) => {
        transporter.sendMail({
            from: `"ZY.API" <1840354092@qq.com>`, // 發(fā)送方郵箱的賬號
            to: to, // 郵箱接受者的賬號
            subject: "Welcome to ZY.API", // Subject line
            // text: '"MG'Blog ?"', // 文本內(nèi)容
            html: `
        <img src="http://www.zhouyi.run:3001/api/v1/files/preview?p=pexels-photo-276452.jpeg&&mimetype=image/jpeg" alt=""  style="height:auto;display:block;" />
        <p >??? <a >ZY.API</a></p>
        <p style="font-weight: bold">${content}</p>
        <p ><a style="font-size: 18px;font-weight: bolder" >確認</a></p>
        <p style="text-indent: 2em;">祝您工作順利,心想事成</p>`
        }, (error, info) => {
            if (error) {
                reject(error)
            }
            resolve(info)
        });
    })
}

4.創(chuàng)建一個 每個星期三中午12點 發(fā)送郵件的任務(wù)實例并且引入發(fā)送郵件的方法

const TaskScheduler = require('./TaskScheduler')
const {send} = require('../../utils/utils.mailer')


const task = async function () {
    await send('1840354092@qq.com', '每個星期三中午12點 發(fā)送郵件')
    return console.log('允許定時任務(wù)每個星期三中午12點 發(fā)送郵件...' + new Date().getMinutes() + "-" + new Date().getSeconds());
};

// 創(chuàng)建一個 每個星期三中午12點 發(fā)送郵件
module.exports = new TaskScheduler('0 0 12 ? * WED', task);

5.路由使用該定時發(fā)送郵件類

/**
 *@author ZY
 *@date 2023/4/10
 *@Description:任務(wù)相關(guān)的接口
 */

const express = require('express');
const router = express.Router();
const SendEmail = require('../../scheduler/task/SendEmail')

/****************************************************************************/


/**
 * 開始發(fā)送郵件定時任務(wù)
 * @route GET /v1/task/startSendEmail
 * @group 定時任務(wù) - 定時任務(wù)相關(guān)
 * @returns {object} 200 - {"status": 1,"message": "登錄成功.","data": {...},"time": 1680598858753}
 * @returns {Error}  default - Unexpected error
 */

router.get('/startSendEmail', function (req, res) {
    //用戶的定時任務(wù)開始
    SendEmail.start();
    res.send('用戶的定時任務(wù)開始!');
});

/**
 * 停止發(fā)送郵件定時任務(wù)
 * @route GET /v1/task/stopSendEmail
 * @group 定時任務(wù) - 定時任務(wù)相關(guān)
 * @returns {object} 200 - {"status": 1,"message": "登錄成功.","data": {...},"time": 1680598858753}
 * @returns {Error}  default - Unexpected error
 */

router.get('/stopSendEmail', function (req, res) {
    SendEmail.stop();
    res.send('用戶的定時任務(wù)開始!');
});

module.exports = router;

6.到這里差不多就可以開始定時任務(wù)和停止定時任務(wù)了,我這里是設(shè)置30秒發(fā)一次郵件

Express實現(xiàn)定時發(fā)送郵件
Express實現(xiàn)定時發(fā)送郵件

?狂點這里查看完整項目代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-409678.html

到了這里,關(guān)于Express實現(xiàn)定時發(fā)送郵件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 無緩存定時發(fā)送帶附件(表格)等郵件

    1.導(dǎo)入發(fā)送郵件的包 2.配置yml 3.添加定時任務(wù) 4.實現(xiàn)

    2024年02月11日
    瀏覽(23)
  • 一張思維導(dǎo)圖帶你學(xué)會使用SpringBoot中的Schedule定時發(fā)送郵件

    一張思維導(dǎo)圖帶你學(xué)會使用SpringBoot中的Schedule定時發(fā)送郵件

    ?????作者名稱:DaenCode ??作者簡介:啥技術(shù)都喜歡搗鼓搗鼓,喜歡分享技術(shù)、經(jīng)驗、生活。 ??人生感悟:嘗盡人生百味,方知世間冷暖。 ??所屬專欄:SpringBoot實戰(zhàn) 標(biāo)題 一文帶你學(xué)會使用SpringBoot+Avue實現(xiàn)短信通知功能(含重要文件代碼) 一張思維導(dǎo)圖帶你學(xué)會Springboot創(chuàng)

    2024年02月14日
    瀏覽(66)
  • Spring Schedule:Spring boot整合Spring Schedule實戰(zhàn)講解定時發(fā)送郵件的功能

    Spring Schedule:Spring boot整合Spring Schedule實戰(zhàn)講解定時發(fā)送郵件的功能

    ???? 歡迎光臨,終于等到你啦 ???? ??我是 蘇澤 ,一位對技術(shù)充滿熱情的探索者和分享者。???? ??持續(xù)更新的專欄 《Spring 狂野之旅:從入門到入魔》 ?? 本專欄帶你從Spring入門到入魔 ? 這是蘇澤的個人主頁可以看到我其他的內(nèi)容哦???? 努力的蘇澤 http://suzee.blog.

    2024年03月14日
    瀏覽(22)
  • Day18: 發(fā)送郵件、開發(fā)注冊功能

    Day18: 發(fā)送郵件、開發(fā)注冊功能

    在這里記一下。原來的html中的css和js路徑下載不下來,需要換成: 我這里使用的是 edu郵箱,好像默認開啟了SMTP服務(wù): 導(dǎo)入Jar包(Maven) 配置郵箱參數(shù) 在applications.properties中配置: 使用JavaMailSender發(fā)送郵件 創(chuàng)建一個包util,表示開發(fā)中需要用到的工具類,并創(chuàng)建MailClient工具類

    2024年03月13日
    瀏覽(25)
  • 搭建個人hMailServer 郵件服務(wù)實現(xiàn)遠程發(fā)送郵件

    搭建個人hMailServer 郵件服務(wù)實現(xiàn)遠程發(fā)送郵件

    hMailServer 是一個郵件服務(wù)器,通過它我們可以搭建自己的郵件服務(wù),通過cpolar內(nèi)網(wǎng)映射工具即可實現(xiàn)遠程發(fā)送郵件,不需要使用公網(wǎng)服務(wù)器,不需要域名,而且郵件賬號名稱可以自定義. 下面以windows 10系統(tǒng)為環(huán)境,介紹使用方法: 進入官方下載:https://www.hmailserver.com/download,選擇最新版本

    2024年02月13日
    瀏覽(26)
  • 異步實現(xiàn)郵件發(fā)送

    目錄 問題描述: 問題分析: 問題解決: 分析總結(jié): 問題描述: ????????在寫接口的時候,遇到一個問題,前端要求直接返回結(jié)果再去運行其他代碼。 問題分析: ????????因為經(jīng)費緊張,本次使用的是網(wǎng)易發(fā)送郵件,也就是用你的賬號給其他人發(fā)送郵件這種,這也存

    2024年02月14日
    瀏覽(10)
  • java實現(xiàn)發(fā)送郵件

    java實現(xiàn)發(fā)送郵件

    本文介紹下java實現(xiàn)郵件的發(fā)送,意在網(wǎng)站用戶評論時能夠及時通知站長和用戶評論被回復(fù)后能夠及時通知用戶。 下文介紹下具體實現(xiàn)。 java實現(xiàn) 首先引入springboot的郵箱依賴 配置郵箱參數(shù),這里以 qq郵箱 作為示例 此時就差不多了,接下來實現(xiàn)郵箱工具類 此時調(diào)用 MailUtil 里

    2024年02月16日
    瀏覽(20)
  • Vue+NodeJS實現(xiàn)郵件發(fā)送

    Vue+NodeJS實現(xiàn)郵件發(fā)送

    一.郵箱配置 這里以QQ郵箱為例,網(wǎng)易郵箱類似. 設(shè)置-賬號 二.后端服務(wù)搭建 index.js router.js util.js 安裝nodemailer ?至此發(fā)送郵件的后端核心就完成了,接下來我們要將驗證碼緩存5分鐘,給用戶進行操作,過了5分鐘,驗證碼會自動失效. 安裝node-cache router.js(全) 至此后端的服務(wù)搭建完畢

    2024年02月10日
    瀏覽(16)
  • Java Email 實現(xiàn)郵件發(fā)送

    Java Email 實現(xiàn)郵件發(fā)送

    Email:電子郵件。 在當(dāng)今社會有著重要的應(yīng)用,傳統(tǒng)的郵件是通過郵局投遞,然后從一個郵局到另一個郵局,最終到達用戶的郵箱。 在電子郵件中也有著相似的發(fā)送過程:電子郵件是從用戶電腦的郵件軟件發(fā)送到郵件服務(wù)器上,經(jīng)過若干個郵件服務(wù)器的中轉(zhuǎn),最終到達對方郵

    2024年02月03日
    瀏覽(21)
  • 讓自己開發(fā)的VBA應(yīng)用能夠批量發(fā)送郵件(可帶多個附件)

    當(dāng)我們開發(fā)了一個VBA應(yīng)用,很多時候需要讓它能夠自動批量發(fā)送郵件。這時候,我們就需要使用到CDO了。CDO全稱Collaboration Data Objects,即協(xié)作數(shù)據(jù)對象,是Office 軟件不在產(chǎn)品安裝的一部分。它是通過基于COM的API提供對Outlook兼容對象的訪問的包。CDO有多個組件,其中Message組件

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包