ノードのcronジョブのスケジューリング.js



ノードのcron仕事.一定の間隔で何度も何度もサーバー上でスクリプトを実行する必要があるときはいつでも、JSは便利になります.これは、任意の特定の時間または日にユーザーにメールを送信などの任意のタスクをすることができます.この記事では、nodemailerの助けを借りてテストします.
まず、次のコマンドを使用してノードアプリケーションを作成します.
mkdir cron-jobs
npm init -y
さて、NPMからNode CronとNodeDailerパッケージをインストールする必要があります.indexというファイルを作成します.アプリケーションのエントリポイントとしてのJSまたは単に、我々のサーバーファイル.
npm install node-cron 
npm install nodemailer
touch index.js
//index.js
const express = require("express")
const cron = require("node-cron")
const nodemailer = require("nodemailer")
const app = express()

app.listen(8000)
cronジョブを設定する前に、まずnodeailerを設定しましょう.
let transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
        user: "[email protected]",
        pass: "password"
    }
})

let mailOptions = {
    from: "[email protected]",
    to: "[email protected]",
    subject: "Nodemailer",
    text: "Testing Nodemailer",
    html: "<h1>Testing Nodemailer</h1>"
}

transporter.sendMail(mailOptions, (err, info) => {
    if(err) {
        console.log("error occurred", err)
    } else {
        console.log("email sent", info)
    }
})

  • トランスポーターは、我々が使用している電子メールサービス、送信者の電子メールとパスワードを持つAuthオブジェクトを保持するオブジェクトです.

  • mailOptions標準の電子メール情報が含まれます.また、EJSやHBSなどのテンプレートを使用することもできます.

  • sendmailメソッドはメールオプションとコールバックを受け取ります.
  • It's important to note that we're using gmail as the service. In order to use it, we will have to turn on the less secure app feature.


    cronのスケジュール方法は次のようになります.
  • cronジョブが実行される時間間隔.
  • メッセージが送信された後に実行されるコールバック関数.
  • cronのアスタリスクスケジュールは、コードが実行される時間間隔を参照します.以下の形式で説明したように、時間を設定できます.
    ┌──────────────── second (optional) 
    | ┌────────────── minute 
    | | ┌──────────── hour 
    | | | ┌────────── day of month 
    | | | | ┌──────── month 
    | | | | | ┌────── day of week
    | | | | | | 
    | | | | | |
    * * * * * *
    
    //For a cron job to run every second
    cron.schedule("* * * * * *", () => {
        //code to be executed
    })
    
    //This will run every 10 seconds
    cron.schedule("*/10 * * * * *", () => {
        //code to be executed
    })
    
    //This will run at the start of every minute
    cron.schedule("0 * * * * *", () => {
        //code to be executed
    })
    
    //This will run at the start of every hour
    cron.schedule("0 * * * *", () => {
        //code to be executed
    })
    
    // This will run on 20th of every month at 02:00 hours
    cron.schedule("* 02 20 * *", () => {
        //code to be executed
    })
    

    nodemailerでcronジョブを設定する


    最終的なコードは次のようになります.
    
    const express = require("express")
    const cron = require("node-cron")
    const nodemailer = require("nodemailer")
    const app = express()
    
    let transporter = nodemailer.createTransport({
        service: "gmail",
        auth: {
            user: "[email protected]",
            pass: "password"
        }
    })
    
    // Here, we're scheduling a cron job and it will send an email at the start of every minute.
    // Info contains the mail content.
    // In case of sending mail to multiple users, we can add multiple recipients.
    cron.schedule("* * * * *", () => {
        console.log("sending email")
        let mailOptions = {
            from: "[email protected]",
            to: "[email protected]",
            subject: "Nodemailer",
            text: "Testing Nodemailer",
            html: "<h1>Testing Nodemailer</h1>"
    }
    
    transporter.sendMail(mailOptions, (err, info) => {
        if (err) {
            console.log("error occurred", err)
        } else {
            console.log("email sent", info)
        }
      })
    })
    
    app.listen(8000)
    
    
    最後に、あなたの端末に頭をし、サーバーを起動します.
    node index.js
    
    この記事を読んでくれてありがとう.詳細については、私に従ってください.