觀點 · 資訊分享

Cloudflare Email Service 開放 SMTP 寄信(beta):舊網站不改程式架構也能接

Cloudflare Email Service 在 6 月 8 日新增經過驗證的 SMTP 寄信通道,成為繼 REST API、Workers 綁定之後的第三種方式。Nodemailer、PHPMailer 等現成函式庫改個設定就能用。

發布
2026-06-08
篇幅
約 3 分鐘 · 1,472 字
結構
8 節 + 3 題常見問題
標籤
#Cloudflare#Email Service#SMTP#交易郵件
Cloudflare Email Service 開放 SMTP 寄信(beta):舊網站不改程式架構也能接

一句話看懂:Cloudflare 的寄信服務新增 SMTP 通道,已經會用 SMTP 寄信的網站,只要換掉主機與帳密就能接上,不必改寫成 API 呼叫。

Cloudflare 寄信服務新增 SMTP資訊圖卡:會寫 SMTP 的舊程式,改主機與帳密就能寄信,不用重寫成 API

先用白話講:SMTP 是什麼?

想像寄實體信:你可以自己跑去郵局櫃檯寄(用 API 呼叫),也可以請里長伯代收(Workers 綁定),而 SMTP 就像是全世界郵局都認得的「投遞窗口」,所有現成的寄信程式都知道怎麼把信丟進去。

Cloudflare 的 Email Service 原本提供兩種寄信方式,這次多開了一個最通用的窗口:SMTP。

發生什麼事

Cloudflare 在 6 月 8 日的更新日誌宣布,Email Service 以 beta 形式支援經過驗證的 SMTP 寄信。官方形容 SMTP 是繼 REST API 與 Workers 綁定之後,寄交易郵件(驗證信、通知信、收據這類)的第三種方式,特別適合:

  • 已經在用 SMTP 的既有應用程式
  • 語言內建的 SMTP 函式庫,例如 Nodemailer、smtplib、PHPMailer、JavaMail

設定值整理

項目 內容
主機 smtp.mx.cloudflare.net
連接埠 465(隱式 TLS)
驗證方式 PLAIN 或 LOGIN
帳號 api_token
密碼 Cloudflare API token(帳號擁有或使用者擁有皆可),需 Email Sending: Edit 權限

用 SMTP 寄出的信,會進入跟 REST API、Workers 綁定相同的寄送管線:限制一樣、自動 DKIM 與 ARC 簽章、後台紀錄共用。

三種寄信方式怎麼選?

  • REST API:從任何後端程式直接呼叫,適合新專案
  • Workers 綁定:寄信的程式本身就跑在 Cloudflare Workers 上時最直接
  • SMTP:舊系統、現成的網站套件或函式庫已經會用 SMTP 時,換設定就能用,不必改程式邏輯

三者共用相同的限制與紀錄,差別只在「怎麼把信交給 Cloudflare」。以上的使用情境整理是依官方描述自行歸納。

給開發者的技術細節

官方給的一行指令測試方式,如下(<API_TOKEN> 請換成自己的權杖,別貼進程式碼或版本控制):

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.net:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "[email protected]" \
  --mail-rcpt "[email protected]" \
  --upload-file mail.txt
  • 寄件網域的設定細節、回應代碼與各語言範例,官方放在 SMTP 參考文件,這則公告沒有展開
  • 目前是 beta,限制與穩定度可能還會調整
  • 權杖只給 Email Sending: Edit 這類最小需要的權限,放在環境變數,不要寫死在程式裡

我的看法

接案時最常見的情況是:客戶的舊網站早就用 SMTP 在寄註冊信與通知信,要換寄信服務,最麻煩的不是申請帳號,而是改程式。SMTP 這條路讓「換個主機與帳密」就能試用,成本低很多。

不過它還在 beta,我不會一次把所有信都切過去。比較穩妥的做法是先挑非關鍵的信件(例如內部通知)跑一陣子,確認送達率與後台紀錄都正常,再把驗證信、收據這類重要信件慢慢搬。

名詞小辭典

  • SMTP:寄送電子郵件的標準協定。
  • 交易郵件:由系統自動寄出的信,例如驗證碼、訂單通知。
  • DKIM:替信件加上數位簽章,證明信確實來自該網域。
  • ARC:信件被轉寄時保留原始驗證結果的機制,降低被誤判為偽造的機率。

資料來源

常見問題

SMTP 是什麼?
寄電子郵件的標準通訊協定。很多網站程式與函式庫(Nodemailer、PHPMailer、JavaMail、Python 的 smtplib)預設就用它寄信,所以只要換設定就能接上。
要用什麼帳密?
帳號固定寫 api_token,密碼填 Cloudflare 的 API token(帳號擁有或使用者擁有都可以),且需要 Email Sending: Edit 權限。
寄出去的信會有簽章嗎?
官方說明,SMTP 送出的信件和 REST API、Workers 綁定走同一條管線,會自動做 DKIM 與 ARC 簽章,限制也一樣。
LINE