场景 1:
在数据库中,它们是一个名为 send_email 的表,它包含 id、time 和 email_address 列。所以我想在那个时候向那个特定的电子邮件发送一封电子邮件。如何在带有 mysql 数据库的 node js rest api 中完成这项任务?
解决方案:假设您希望每 3 小时发送一次电子邮件。创建一种从 mysql 获取数据并发送电子邮件的方法。
let cron = require('node-cron');
cron.schedule('0 0 */3 * * *', () => {
//call method here
});
场景 2:
在数据库中,它们是一个名为 send_notification 的表,它包含 id、date 和 email_address 列。所以我想在 1 天到那个日期之前发送一封电子邮件,提醒用户以及那个日期之后。
解决方案:每天在特定时间运行 cron 作业并使用这些查询从数据库获取记录。
SELECT * FROM FOO
WHERE date >= NOW() + INTERVAL 1 DAY
// This query will help to get records 1 day before
SELECT * FROM FOO
WHERE date >= NOW() - INTERVAL 1 DAY
// This query will help to get records 1 day after
let cron = require('node-cron');
cron.schedule('0 0 0 * * *', () => {
//call method here
});
场景 3:
每天凌晨 12 点发送电子邮件或进行一些数据库操作
解决方案
let cron = require('node-cron');
cron.schedule('0 0 0 * * *', () => {
//call method here
});
Nodemailer 是一个帮助发送电子邮件的软件包
var nodemailer = require('nodemailer');
// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com');
// setup e-mail data with unicode symbols
var mailOptions = {
from: '"Fred Foo ?" <foo@blurdybloop.com>', // sender address
to: 'bar@blurdybloop.com, baz@blurdybloop.com', // list of receivers
subject: 'Hello ✔', // Subject line
text: 'Hello world ?', // plaintext body
html: '<b>Hello world ?</b>' // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
if(error){
return console.log(error);
}
console.log('Message sent: ' + info.response);
});
或没有 SMTP
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
transport: 'ses', // loads nodemailer-ses-transport
accessKeyId: 'AWSACCESSKEY',
secretAccessKey: 'AWS/Secret/key'
});
transporter.sendMail(data[, callback])