2014年8月28日 星期四

【Node.js】Send Email

需求為寄出帳號認證信件
開發環境為 ubuntu, nodejs, express, smtp server
以及需要安裝兩個 nodejs 模組
nodemailer 與 nodemailer-smtp-transport
使用 npm 安裝
  1. npm install nodemailer
  2. npm install nodemailer-smtp-transport
module.exports = {
 sendEmail: function(_recipient, _subject, _html, _callback) {
  var nodemailer = require('nodemailer');
  var smtpTransport = require('nodemailer-smtp-transport');
  var config = require("../config/config");
     var transporter = nodemailer.createTransport(smtpTransport({
         host: config.smtp.host,
         port: config.smtp.port,
         auth: {
             user: config.smtp.user,
             pass: config.smtp.pwd
         }
     }));

     transporter.sendMail({
         from: 'sender@domain.org.tw',
         to: _recipient,
         subject: _subject,
         html: _html
     }, function(err, info) {
         _callback(err, info);
     });
 }
}
使用 SMTP Server 的好處是
寄件人的位置可以自行定義
若不介意寄件人地址
也可以請 Gmail 幫忙寄信
更改 transporter 即可
var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'sender@gmail.com',
        pass: 'password'
    }
});

2014年8月20日 星期三

【Ubuntu】設定開機後啟動服務

用 forever 監控 nodejs 服務
但是當 ubuntu 重啟後
forever 並不會重啟原本監控中的服務
導致監控中的 nodejs 服務中斷
因此編輯 shell script 設定 ubuntu 重啟後
forever 重新監控 nodejs 服務

在 ubuntu 路徑 /etc/init.d 下,
增加 run_forever.sh
************檔案內容開始************

forever start /var/nodejs/app.js

************檔案內容結束************

編輯完 shell script 後
還需要執行以下兩個指令

  1. sudo update-rc.d run_forever.sh defaults 99 1
  2. sudo chmod +x /etc/init.d/run_forever.sh*

最後重開機做測試,重開機指令
sudo reboot
重啟 ubuntu 之後,可用 forever list 指令觀察 nodejs 是否有執行服務