為提升電子郵件安全性,並確保大量電子郵件能穩定送達,請從舊版 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 功能,請按照下列步驟操作:
執行下列指令來安裝 Maven:
sudo apt install maven在
pom.xml檔案中新增下列程式碼,切換至 SMTP 服務:新增
appengine-api-1.0-sdk依附元件的版本:<dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-1.0-sdk</artifactId> <version>2.0.38</version> </dependency>更新專案 ID:
<configuration> <deploy.projectId>PROJECT-ID</deploy.projectId> <deploy.version>1</deploy.version> </configuration>將 PROJECT-ID 替換為專案 ID。 Google Cloud
在
appengine-web.xml檔案中新增下列環境變數,加入 SMTP 寄件者設定:... <runtime>RUNTIME</runtime> <service>default</service> <threadsafe>true</threadsafe> <app-engine-apis>true</app-engine-apis> <env-variables> <!-- This is the master switch to enable the SMTP service.--> <env-var name="APPENGINE_USE_SMTP_MAIL_SERVICE" value="true" /> <!-- SMTP Server Configuration --> <!-- The server address from your mail provider.--> <env-var name="APPENGINE_SMTP_HOST" value="SMTP_HOST" /> <!-- The recommended port for TLS connections. --> <env-var name="APPENGINE_SMTP_PORT" value="587" /> <!-- The username for your SMTP login. --> <env-var name="APPENGINE_SMTP_USER" value="SMTP_USER" /> <!-- The API key or password --> <env-var name="APPENGINE_SMTP_PASSWORD" value="SMTP_PASSWORD" /> <!-- Use TLS for a secure connection. --> <env-var name="APPENGINE_SMTP_USE_TLS" value="true" /> </env-variables> ... </appengine-web-app>更改下列內容:
- RUNTIME:支援的 Java 執行階段版本。
- SMTP_HOST:SMTP 主機位址。例如
smtp.sendgrid.net或example.mailjet.com。 - SMTP_USER:帳戶的 SMTP 登入使用者名稱。例如:
apiKey。 - SMTP_PASSWORD:從第三方電子郵件服務供應商取得的密碼或 API 金鑰。為提升安全性,建議您使用 Secret Manager 儲存 API 金鑰,而不是將金鑰放在
appengine-web.xml檔案中。
執行下列指令來部署應用程式:
mvn package appengine:deploy
測試應用程式
如果可以部署應用程式且沒有錯誤,即代表遷移作業成功。如要確認郵件服務是否正常運作,請按照下列步驟操作:
- 觸發應用程式中傳送電子郵件的部分。
- 檢查記錄檔瀏覽器,確認 API 呼叫或 SMTP 連線嘗試沒有發生錯誤。
- 登入第三方電子郵件服務供應商的帳戶 (例如 Mailgun、Mailjet、SendGrid),並查看活動動態消息、記錄或傳送狀態資訊主頁。測試電子郵件應會顯示在動態消息中,且遞送狀態標示為「已傳送」
Processed、「已遞送」Delivered或類似狀態。