Node.js & Firebase Functions:使用NodeMailer透過Gmail寄信

安裝套件:
npm install --save nodemailer

程式範例如下,利用自己的Gmail來寄信

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
 service: 'gmail',
 auth: {
        user: 'myemail@gmail.com', //自己的Gmail Address
        pass: 'password'
    }
});

const mailOptions = {
  from: 'sender@email.com', //寄件者
  to: 'receivers@email.com', //收件者
  subject: '測試', //信件主旨
  html: '<p>Hello,the world</p>'  //信件內容
};

transporter.sendMail(mailOptions,(error, info) => {
      if (error) {
        console.log(error);
      } else {
console.log(info.response);
      }
});

因為我有啟用Gmail的兩階段認證,所以測試時出現密碼錯誤,需要特殊的密碼。


解決的方式是登入Google,在「登入和安全性」的頁面中選取「應用程式密碼」


在接下來的步驟中,應用程式選擇「郵件」,並在選取裝置中選擇「其他(自訂名稱)


輸入名稱後按下「產生」,會產生一組特殊的密碼,只要將這組密碼取代自己的Gmail密碼,
程式就可以不用經過兩階段認證而寄出信。

這組特殊的密碼僅供應用程式使用,所以原本的密碼及兩階段認證並不受影響。