2012年5月3日 星期四

Node.js send mail example

這個範例主要使用nodemailer這個npm套件來進行發送mail的工作
nodemailer使用其實相當簡單
該套件不僅可以發純文字mail,也支援html格式的mail
相關說明可以參考nodemailer的GitHub: https://github.com/andris9/Nodemailer

這邊不展示基本用法,直接建立一個util模組send-nodemail.js
然後,再透過test.js來呼叫(當然,您也可以把呼叫的部分安插在您的程式裡面...)

File: send-nodemail.js 
var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport("SMTP",{
        service: "Gmail",
        auth: {
            user: "xxx@xxx.xxxx",
            pass: "yourpassword"
        }
});
var mailOptions = {
      from: "me@xxx.com>", // sender address
      to: "you@xxx.com", // list of receivers
      subject: "Hello", // Subject line
      //text: "Hello world ✔", // plaintext body
      html: "<h1>MAIL...</h1><br/><b>Hello world ✔</b>" // html body
}
exports.sendNodeMail = function(receivers, subject, msg) {
  mailOptions.to = receivers;
  mailOptions.subject = subject;
  mailOptions.html = msg;
  smtpTransport.sendMail(mailOptions, function(error, response){
      if(error){
          console.log(error);
      }else{
          console.log("Message sent: " + response.message);
      }
      smtpTransport.close(); // shut down the connection pool, no more messages
  });
}
這部分,smtpTransport是郵件基本設定
在此針對Gmail的支援只要填寫service為Gmail即可
另外,mailOptions是郵件主體
包含寄件者、收件者、主旨與內文等資訊,其中html欄位是放置html形態的內文
sendNodeMail是此模組的一個function
提供三個輸入操作:receivers=收件者、subject=郵件主旨、msg=訊息內容(這邊預設使用html)
只要透過執行此function即可發送信件

Usage example: test.js
var mail = require('./send-nodemail');
var receivers = ['sss@xxx.ooo','ss2@xxx.ooo'];
var content = '<h1>TEST</h1>';
mail.sendNodeMail(receivers, 'Daily CreditCard User List', content);
有了send-nodemail這個模組,您的程式碼中,就可以類似test.js一樣,直接定義收件者、標題、內文來進行發送拉!

Execute: 
node test.js