node 定時傳送郵件

Taste發表於2019-02-16

定時傳送,可做提醒使用

nodemailer

nodemailer 是一款簡單易用的基於於SMTP協議(或 Amazon SES)的郵件傳送元件

cron

cron可以指定每隔一段時間執行指定的程式、也可以指定每天的某個時刻執行某個程式、還可以按照星期、月份來指定。
具體描述

npm install nodemailer -S
npm install nodemailer-smtp-transport -S
npm install cron -S

程式碼中有詳細的註釋

let nodemailer = require(`nodemailer`),
    smtpTransport = require(`nodemailer-smtp-transport`),
    cronJob = require(`cron`).CronJob;

// SMTP 連線
let transport = nodemailer.createTransport(smtpTransport({
  // 主機
  host: `smtp.163.com`,
  // 是否使用 SSL
  secure: false,
  secureConnection: false,
  // 網易的SMTP埠
  port: 25, 
  auth: {
    // 賬號
    user: `***@163.com`, 
    // 授權碼(自行百度郵箱SMTP的授權碼設定),此處非密碼
    pass: `***`, 
  }
}));
// 設定郵件內容
let mailOptions = {
  // 發件人地址,例如 1234<1234@163.com>
  from: `***<***@163.com>`, 
  // 收件人地址,可以使用逗號隔開新增多個
  // `***@qq.com, ***@163.com`
  to: `***@qq.com`, 
  // 標題
  subject: `Hello World`, 
  // 郵件內容可以自定義樣式
  html: `<strong style="color: red">測試"郵件轟炸機"</strong>`
}
// 定時傳送郵件
// 每秒執行一次
// 具體的各項設定檢視上方的連結
new cronJob(`* * * * * *`, () => {
  transport.sendMail(mailOptions, (error, response) => {
    if (error) {
      console.error(error)
    } else {
      console.log(`Message Send Ok`)
    }
    // 記得關閉連線
    transport.close();
  })
}, null, true, `Asia/Shanghai`);

相關文章