Contents
Cài đặt dependency
Trong bài viết này, chúng ta sẽ tạo cron job để gửi email. Tạo một dự án NodeJS đơn giản bằng cách chạy lệnh sau trong terminal hoặc bash.
mkdir node-cron-job-scheduler
cd node-cron-job-scheduler
npm init -y
touch index.js
Cài đặt những dependency sau
npm install — save express node-cron nodemailer
Trong file index.js file, import dependency vào bên trên.
<!-- wp:paragraph -->
<p>const cron = require(“node-cron”);</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>const express = require(“express”);</p>
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<p>const nodeMailer = require(‘nodemailer’);</p>
<!-- /wp:paragraph -->
Bây giờ chúng ta sẽ tạo một server NodeJS đơn giản bằng cách thêm:
app = express();
…
app.listen(8000);
Tạo Tài khoản Email Test
Trước khi chúng ta tạo cron job, hãy tạo tài khoản email test tại https://ethereal.email/. Chúng ta sẽ sử dụng các thông tin test này để gửi email. Tạo tài khoản người dùng thử nghiệm bằng cách sử dụng mô-đun nodemailer như sau:
let testAccount = nodemailer.createTestAccount();
testAccount.user và testAccount.pass có thể được sử dụng để cung cấp thông tin xác thực cho đối tượng Mail Transporter.
Scheduling Cron Job
Hãy tạo cron job bằng mô-đun node-cron.
cron.schedule(“* * * * *”, function () {
console.log(“Running Cron Job”);
});
Here, the cron job runs for every minute. Start the Node.js server and you will see the message “Running Cron Job” in the console at every minute. We can schedule jobs at different days or time.
Ở đây, cron job chạy mỗi phút. Khởi động server NodeJS và bạn sẽ thấy thông báo “Running Cron Job” trong bảng điều khiển mỗi phút. Chúng ta có thể schedule job vào những ngày hoặc thời gian khác nhau.
Ví dụ: “* * 5 * *“ => Điều này đại diện cho ngày 5 hàng tháng. “30 7 * * *” biểu thị mỗi ngày ở giờ thứ 7 và phút thứ 30.
Hãy thêm logic để gửi email bằng mô-đun nodemailer trong cron job.
let transporter = nodeMailer.createTransport({
host: ‘smtp.ethereal.email’,
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: ‘<TEST_USER>’, // generated ethereal user
pass: ‘<TEST_PASSWORD>’ // generated ethereal password
}
});
const mailOptions = {
from: ‘“John Doe” <john.doe@example.com>’, // sender address
to: ‘jane.doe@example.com’, // list of receivers
subject: ‘Hello there!’, // Subject line
text: ‘A Message from Node Cron App’, // plain text body
html: ‘<b>A Message from Node Cron App</b>’ // html body
};
transporter.sendMail(mailOptions, function (error, info) {
console.log(info.messageId);
if (err) {
console.log(err);
}
});
Ở đây, chúng ta đã tạo object vận chuyển bằng cách sử dụng mô-đun nodemailer và sử dụng Ethereal làm server SMTP NodeJS. Cung cấp thông tin tài khoản thử nghiệm mà đã tạo trước đó.
Trong đối tượng mailOptions, chúng ta đã cung cấp tất cả các thông tin cần thiết để tạo một email.
Testing Cron Job
Chạy server bằng cách sử dụng lệnh sau node index.js. Chúng ta sẽ thấy thông báo Id trong bảng điều khiển mỗi phút như sau:
Running Cron Job
<bd7dd14e-3e9b-e495–12d5-c5e67a11af5c@example.com>
Trong trang Ethereal, chúng ta có thể thấy các email được gửi từ server bằng cách sử dụng nút shown trong ảnh chụp màn hình bên dưới.
Ethereal website
Test Mails trên Ethereal site
Chúng ta có thể sử dụng bất kỳ máy chủ SMTP thực nào mà chúng ta chọn để gửi email.
Kết luận
Qua bài viết, bạn đã hiểu rõ cách viết lập lịch trình cron job cho web của bạn. Hãy tận dụng để nâng cấp web, tạo một tính năng tận dụng được khả năng của nó
Tham khảo thêm về NodeJS tại đây: Top 3 view engine phổ biến trong NodeJS

Bài viết này được sưu tầm và tổng hợp từ nhiều nguồn trên Internet.
Nếu có gì không hiểu thì inbox messenger bên dưới mình hỗ trợ thêm nhé.