使用程式發送email,Nodejs+Nodemailer來發送Email封面
寫一封email是現在人的日常,用程式發送email本來以為是一件難事,但自從摸了一下
Nodemailer以後世界就變得不一樣
甚至使用Nodemailer搭配Express就可以製作出簡易發送Email的API給自己使用(or別人),馬上進入主題
首先你要有一個nodejs的server,會看這篇文章我就預設是已經準備齊全,尚未準備好可直接使用
模板進行編輯
OK馬上進入實作環節
Nodemailer事前準備
在開始之前需要準備一組用來發送email的帳號,並且為那個帳號申請應用程式密碼,本篇文章使用Gmail作為撰寫範例,如果你使用其他mail則自行準備登入需要的內容
前往google帳號的
Google 帳戶頁面,進入左方 安全性頁籤後在登入google的區塊點選 應用程式密碼,選擇郵件並選擇server部署環境即可,若沒有辦法申請則是因為安全性問題需要將此帳號設定兩階段密碼驗證才能繼續申請 應用程式密碼
安裝Nodemailer
npm install nodemailer
Nodemailer程式初始化
基本使用可參考官方的範例,本文使用Gmail作為範例撰寫,在初始化的過程中會需要填入發送email的帳號及申請的應用程式密碼
const nodemailer = require("nodemailer")
const transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: <EMAIL_SERVICE_AUTH_USER>,
pass: <EMAIL_SERVICE_AUTH_PW>
}
})
| 欄位 | 內容 |
|-------|------------|
| from | 郵件寄出人 |
| to | 郵件寄給誰 |
| subject | 郵件標題 |
| text | 郵件文字內容 |
| html | 郵件HTML內容 |
| cc | 郵件副本 |
| bcc | 郵件副本密送 |
其中 from& to& cc寄送人的欄位除了可以直接填寫mail格式以外,也可以用 "someone” <someone@gmail>的格式撰寫,寄送給多人可用逗號隔開或是用陣列方式撰寫,更多其他格式則參考
官方文件
寄送email的方式是使用 sendMail,將前面準備好的寄送內容傳入即可成功寄送,可以準備回調程式來處理發送成功或失敗的狀態處理
const mailOptions = {
from: <EMAIL_FROM>,
to: <EMAIL_TO>,
subject: <EMAIL_TITLE>,
text: <EMAIL_CONTENT>
}
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
ErrHandler()
} else {
Callback()
}
})
撰寫到此就是基本使用Nodemailer寄送Email的紀錄
若是想要有基本的樣式則需要使用HTML格式放在 html的欄位中寄出
製作成API
相關資料