全端勇士之路 Node.js 基礎學習-電子郵件發送

前言

一般來講電子郵件是一個非常常見的一個功能,舉凡訂閱、預約、註冊等等都會使用到這個功能,所以這邊來記錄一下如何使用 Gmail 來實作

起手式

接下來將會使用到的一個套件 nodemailer,只要使用這個套件就可以達到發送信,但是使用之前必須先安裝套件

1
npm install --save nodemailer

滿多地方都可以在 Example 都可以看到如何使用

Example

使用方式

由於 nodemailer 只會在特定的 route 上運作,所以並不需要整個都 require,只需要在特定的 route 下 var nodemailer = require("nodemailer");

程式碼方面就多講,大多都會透過兩種方式傳送資料 AJAX or Form 表單,重點底下的 nodemailer 設置

如果暫時不想輸入帳號密碼可以使用 nodemailer 提供的測試帳號密碼 API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

var testAccount = nodemailer.createTestAccount();

var transporter = nodemailer.createTransport({
host: "smtp.ethereal.email",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: testAccount.user, // generated ethereal user
pass: testAccount.pass // generated ethereal password
}
});
var info = transporter.sendMail({
from: '"Fred Foo 👻" <foo@example.com>', // sender address
to: "bar@example.com, baz@example.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>" // html body
});

如果要自定義成 Google 的話,就是這樣寫

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var transporter = nodemailer.createTransport({
service: 'Gmail'
host: "smtp.ethereal.email",
port: 587,
auth: { // 要用來發信的帳號及密碼,後面可以改用 dotenv 來傳入,進而保護自己的帳密
user: 'XXX@gmail.com',
pass: 'Paswword'
}
});

// 設置發信內容
var mailOtions = {
form: '"XXXX"<XXX@gmai.com>', // 發信者是誰
to: 'XXXX@gmail.com,123@gmail.com', // 發給誰,用逗號分開
subject: 'title', // 信件標題
text: 'XXXX', // 單純文字內容
html: 'HTML 模式' // 可寫入 HTML 格式
}

// 準備發送信件
transporter.sendMail(mailOtions,function(error, info) {
if(error) {
// ... 出錯的話就怎樣
}
// 發信成功就轉止
res.redirect('/')
});

補充

這時候去看官網應該會發現官網會推薦使用 ES6、ES7 的寫法,我個人也是推薦使用,可以確保信件有寄出去。

0%