為提升電子郵件安全性,並確保大量電子郵件能穩定送達,請從舊版 Mail API 遷移至使用簡易郵件傳輸通訊協定 (SMTP) 的標準第三方電子郵件服務供應商,例如 SendGrid、Mailgun 或 Mailjet。
本指南說明如何將外寄電子郵件服務從 Mail API 遷移至以 SMTP 為基礎的電子郵件服務。您可以按照這些操作說明,遷移至任何以 SMTP 為基礎的第三方電子郵件服務供應商,或使用其他支援的執行階段。本指南未提供使用第三方替代方案遷移來電訊息的步驟。
與舊版 App Engine Mail API 相比,SMTP 標準具有下列優勢:
SMTP 服務可降低電子郵件遭標示為垃圾郵件的機率,進而提高郵件送達率。
使用 SMTP 服務時,您可以存取電子郵件開啟、點擊和退信的詳細分析報告。這些報表提供實用資訊,可瞭解使用者與電子郵件的互動情形。
您可以完全掌控寄件者信譽和電子郵件驗證。
與舊版 Mail API 相比,每日傳送上限更高,且可使用 A/B 測試、分眾和範本等進階功能。
轉換程序總覽
遷移程序包括下列步驟:
- 設定 SMTP 型電子郵件服務,取得 SMTP 憑證。
- 驗證寄件者身分,透過網域或電子郵件地址進行驗證。
- 使用 SMTP 憑證和傳送方法設定來源檔案,然後部署應用程式。
- 測試應用程式,檢查電子郵件功能。
設定以 SMTP 為基礎的電子郵件服務
向使用 SMTP 的標準第三方電子郵件服務供應商 (例如 SendGrid、Mailgun 或 Mailjet) 建立帳戶,並從所選供應商擷取下列資訊:
SMTP 主機:用於傳送郵件的 SMTP 伺服器位址。例如
smtp.sendgrid.net或example.mailjet.com。「Port」(通訊埠):連線的通訊埠編號。例如 TLS 加密的
587。使用者名稱:帳戶的 SMTP 登入使用者名稱。
密碼或 API 金鑰:帳戶密碼或 API 金鑰,做為 SMTP 連線的密碼。對於 SendGrid 等部分供應商,使用者名稱是
apikey等固定值,而 API 金鑰則做為密碼。
驗證傳送者身分
為避免垃圾郵件,所有電子郵件服務都會要求您驗證電子郵件地址或網域的擁有權,才能從該地址或網域傳送電子郵件。這個步驟通常需要在網域代管商的 DNS 管理頁面中,加入特定 DNS 詳細資料,例如 CNAME 記錄。
請按照供應商的操作說明驗證寄件者身分,再繼續設定應用程式。
如要將 DNS 記錄新增至網域代管商網站,請按照下列步驟操作:
- 登入 DNS 供應商服務。
- 前往網域的 DNS 管理頁面。
請按照電子郵件服務供應商提供的資訊,準確新增 CNAME 記錄。針對每筆記錄,請執行下列操作:
- 在「Name」或「Host」欄位中輸入主機詳細資料。
- 在「點數」或「價值」欄位中輸入值。
DNS 變更可能需要數小時才會生效。如果驗證失敗,請稍候片刻再試一次。
設定來源檔案
如要加入 SMTP 功能,請按照下列步驟操作:
執行下列指令,將 App Engine SDK 更新至最新版本:
# Ensure your virtual environment is active pip install --upgrade appengine-python-standard # Save the new version to your requirements file pip freeze > requirements.txt在
app.yaml檔案中新增下列程式碼,切換至 SMTP 服務:runtime: RUNTIME # a supported python version env_variables: # Enable the SMTP service. APPENGINE_USE_SMTP_MAIL_SERVICE: "true" # --- SMTP Server Configuration --- # The server address from your mail provider APPENGINE_SMTP_HOST: "SMTP_HOST" # The recommended port for TLS connections APPENGINE_SMTP_PORT: "587" # The username for your SMTP login APPENGINE_SMTP_USER: "SMTP_USER" # The API key or password APPENGINE_SMTP_PASSWORD: "SMTP_PASSWORD" # Use TLS for a secure connection APPENGINE_SMTP_USE_TLS: "true" # --- For sending emails to Admins --- # A comma-separated list of admin email addresses. # This is required if you use the send_mail_to_admins() function. APPENGINE_ADMIN_EMAIL_RECIPIENTS: "admin@example.com,another-admin@example.com"更改下列內容:
- RUNTIME:支援的 Python 執行階段版本。
- SMTP_HOST:SMTP 主機位址。例如
smtp.sendgrid.net或example.mailjet.com。 - SMTP_USER:帳戶的 SMTP 登入使用者名稱。例如:
apiKey。 - SMTP_PASSWORD:從第三方電子郵件服務供應商取得的密碼或 API 金鑰。為提升安全性,建議您使用 Secret Manager 儲存 API 金鑰,而不是將金鑰放在
app.yaml檔案中。 - 如果未使用
send_mail_to_admins()函式,請省略APPENGINE_ADMIN_EMAIL_RECIPIENTS設定。
執行下列指令來部署應用程式:
gcloud app deploy
測試應用程式
如果可以部署應用程式且沒有錯誤,即代表遷移作業成功。如要確認郵件服務是否正常運作,請按照下列步驟操作:
- 觸發應用程式中傳送電子郵件的部分。
- 檢查記錄檔瀏覽器,確認 API 呼叫或 SMTP 連線嘗試沒有發生錯誤。
- 登入第三方電子郵件服務供應商的帳戶 (例如 Mailgun、Mailjet、SendGrid),並查看活動動態消息、記錄或傳送狀態資訊主頁。測試電子郵件應會顯示在動態消息中,且遞送狀態標示為「已傳送」
Processed、「已遞送」Delivered或類似狀態。