Development Log

Back →

2020-03-27 後端工程師 Yen Chen GCP 電商網站架設教學 :教你如何用 SendGrid 為你的網站發信!

SendGrid 是什麼?為何要使用它?
 
一個電商購物網站免不了的就是有一堆信件通知信要寄送,不管是會員註冊信、訂單成立信、優惠通知信 …等,都需要一個郵件伺服器來幫你發送信件,而以GCP架站來說,GCP 的主機會阻擋 25. 465. 587 這幾個Port,因此一般網站常用的幾種寄信方式便不合適,但本次介紹的 SendGrid 可輕鬆解決這個問題,它是一個第三方郵件服務,主要採用 2525 port ,設定上相當容易,不僅可以省去自己架設及維護郵件伺服器的成本,每個月更是提供了 12,000 封信的額度讓你免費使用,下面教你如何一步一步申請並設定SendGrid 為你的網站發信:
 
一、登入GCP ,設定 SendGrid & 申請帳號
 
  1. 登入你的 GCP 帳號,至搜尋框輸入"sendgrid email",可看到" SendGrid Email API" 這個項目,點選它
 
 
  1. 進入「SendGrid Email API」頁面後,直接點選「開始使用免費方案」
 
  1. 接著選擇使用的方案,這裡使用 Free 免費方案,每月最多可免費寄送 12,000 封信件
 
 
  1. 再來要註冊 SendGrid 帳號,點選 "註冊「SendGrid」"的按鈕
 
 
  1. 開始註冊帳號,填入相關欄位資訊後送出。
  2. 而這裡填寫的 Username 及 Password 會當作網站發信用的帳密,請務必記住。
 
 
  1. 送出後回到後台,即可看已訂閱「Free」方案
 
二、SSH 連線主機,設定 Postfix
 
  1. 以 SSH 連線進入主機
  2. 輸入以下指令進行安裝套件及設定
 
sudo umask 077
sudo yum install cyrus-sasl-plain cyrus-sasl-md5 mailx -y
 
  1. 編輯 /etc/postfix/main.cf 文件,至文件最底部,貼上以下設定值,並儲存
 
sudo vi /etc/postfix/main.cf
 
貼上以下設定值:
relayhost = [smtp.sendgrid.net]:2525
smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
header_size_limit = 4096000
smtp_sasl_security_options = noanonymous
 
 
  1. 輸入以下指令,建立發信的帳號密碼檔,USERNAME 填入剛註冊的帳號 (注意是username,不是信箱),PASSWORD 填入註冊密碼
 
sudo echo [smtp.sendgrid.net]:2525 USERNAME:PASSWORD >> /etc/postfix/sasl_passwd
 
  1. 輸入以下指令,將上面建立好的檔案,轉成db格式
 
sudo postmap /etc/postfix/sasl_passwd
 
  1. 輸入以下指令,確認是否有產生.db的檔案
 
sudo ls -l /etc/postfix/sasl_passwd.db
 
  1. 確認建立好後刪除先前的帳號密碼檔
 
sudo rm-rf /etc/postfix/sasl_passwd
 
  1. 輸入指令,重啟 postfix,若無錯誤訊息則表示設置成功
 
sudo postfix reload
 
三、測試發信
 
  1. 輸入下面指令測試發信,youremail@example.com 填入你的信箱,若有收到主旨為"Test-Email",內容為"Message"的信件,即表示設定成功!
 
echo 'Message.' | mail -s Test-Email youremail@example.com
 
 
  1. 也可使用程式來發信,設定資訊如下:
  2.  
SMTP
Host: smtp.sendgrid.net
Port: 2525
Username: 註冊帳號 (非註冊信箱)
Password: 註冊密碼
 
 
結論
 
這樣操作下來是不是方便申請也容易設定呢!但要注意的是,若你的每月發信量超過 12,000 封,那可能就不適合免費方案,若是超出額度將會無法寄信,如有疑問或是想更了解 SendGrid 的話可到他們官網查詢它的相關文件!
 
 
參考文獻


Customer Service

Customer Service

LINE Contact