使用 SendGrid 傳送電子郵件

您可以在 Google App Engine 上使用 SendGrid,以享有強大的電子郵件功能。使用 SendGrid 可改善郵件遞送能力,並讓您清楚瞭解電子郵件從應用程式傳送後的實際情形。您可以透過 SendGrid 介面或其 API 查看郵件的開啟次數、點擊次數、取消訂閱、垃圾內容報告等統計資料。

定價

Google App Engine 客戶每月可免費傳送 12,000 封電子郵件。請按照以下步驟申請免費電子郵件配額,並查看更高配額的方案。

事前準備

在開始前,您需要完成以下事項:

  1. 在 GCP 主控台建立或選取 GCP 專案,然後確認這個專案包含 App Engine 應用程式:

    前往 App Engine

    如果專案中已經有 App Engine 應用程式,系統會開啟「Dashboard」(資訊主頁)。如果沒有,則系統會提示您選擇 App Engine 應用程式所在的地區

  2. 透過 GCP 主控台註冊 SendGrid;Google Cloud Platform 開發人員一開始可享有每月 12,000 封免費電子郵件的配額。

  3. 如要將 Java 應用程式部署至 App Engine,您必須先設定環境,詳情請參閱部署 Java 應用程式一文。

    下載 SDK

傳送電子郵件

完成必備條件後,請確認您的本機電腦已完成 Java 的設定

將所需的 SendGrid 專用的 Java 程式庫模組新增至應用程式。例如,如果您使用 Maven,請新增至專案的 pom.xml

<dependency>
  <groupId>com.sendgrid</groupId>
  <artifactId>sendgrid-java</artifactId>
  <version>4.3.0</version>
</dependency>

在 SendGrid 建立 API 金鑰並設定網域與 API 金鑰。您可以使用透過 SendGrid 設定的網域或其測試網域

<env-variables>
  <env-var name="SENDGRID_API_KEY" value="YOUR-SENDGRID-API-KEY" />
  <env-var name="SENDGRID_SENDER" value="YOUR-SENDGRID-SENDER" />
</env-variables>

將 SendGrid 程式庫匯入應用程式的程式碼:

import com.sendgrid.Content;
import com.sendgrid.Email;
import com.sendgrid.Mail;
import com.sendgrid.Method;
import com.sendgrid.Request;
import com.sendgrid.Response;
import com.sendgrid.SendGrid;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

現在您可以在應用程式中透過下列幾行指令傳送電子郵件:

// Set content for request.
Email to = new Email(toEmail);
Email from = new Email(sendgridSender);
String subject = "This is a test email";
Content content = new Content("text/plain", "Example text body.");
Mail mail = new Mail(from, subject, to, content);

// Instantiates SendGrid client.
SendGrid sendgrid = new SendGrid(sendgridApiKey);

// Instantiate SendGrid request.
Request request = new Request();

try {
  // Set request configuration.
  request.setMethod(Method.POST);
  request.setEndpoint("mail/send");
  request.setBody(mail.build());

  // Use the client to send the API request.
  Response response = sendgrid.api(request);

  if (response.getStatusCode() != 202) {
    resp.getWriter().print(String.format("An error occurred: %s", response.getStatusCode()));
    return;
  }

  // Print response.
  resp.getWriter().print("Email sent.");
} catch (IOException e) {
  throw new ServletException("SendGrid error", e);
}

建議您新增自己的帳戶詳細資料,然後編輯電子郵件地址和其他訊息內容。

當您準備好將應用程式部署至 App Engine 時,可以使用 Maven (mvn appengine:deploy) 或 appcfg 指令列工具。詳情請參閱部署應用程式的說明。

如要進一步瞭解應用程式中的電子郵件,請瀏覽 SendGrid 說明文件

取得即時資訊

除了傳送電子郵件,SendGrid 還可協助您接收電子郵件,或針對您已送出的電子郵件提供相關資料。您可以透過兩種即時 Webhook 解決方案,讓電子郵件在應用程式中發揮絕妙功效。

使用 Event API

開始透過應用程式傳送電子郵件後,您可以瞭解其成效。SendGrid 最實用的功能之一就是統計資料。Event API 會將這些資料全部彙整成巨大的即時資料串流供您查看。舉例來說,每當收件者開啟或點擊電子郵件時,SendGrid 就可將少量的描述性 JSON 傳送至您的 Google App Engine 應用程式。您可以回應事件,或是儲存資料以供日後使用。

事件資料有許多不同的應用方式。一些常見的用法包括將電子郵件統計資料整合至內部資訊主頁,或透過資料來針對取消訂閱和垃圾內容報告事件立即做出回應。Event API 的進階使用者還可只傳送電子郵件給過去幾個月內曾點擊或開啟郵件的人,藉此提高電子郵件的互動程度。

請參閱 Event API 說明文件,瞭解 Webhook 的設定方式、九種事件類型,以及事件回呼中包含的欄位。

使用 Inbound Parse API

您也可以使用 SendGrid 接收電子郵件。Inbound Parse API 有多種強大且具互動性的應用方式,例如,自動處理客戶電子郵件中的支援票證,或透過員工在外發送的簡短電子郵件收集資料。NudgeMail 的提醒應用程式甚至完全是根據 Parse API 打造而成。

如同 Event API,Parse API 是一種 Webhook,可在有新資料時將資料傳送至您的應用程式。在這種情況下,只要有新的電子郵件送達至內送電子郵件連結的網域,系統就會呼叫 Webhook。由於電子郵件的 DNS 運作方式相當複雜,因此您必須將所有內送電子郵件指派至用於 Parse API 的網域或子網域。

電子郵件是以 JSON 結構傳送到您的應用程式,其中寄件者、收件者、主旨和內文會顯示在不同欄位。SendGrid 的郵件大小上限為 20 MB,只要未超出這個上限,您甚至可接受附件。

請參閱 Parse API 說明文件,進一步瞭解隨每封電子郵件傳送的其他欄位,以及 DNS 設定和使用說明。

* 如果客戶註冊非免費帳戶,Google 將獲得補償。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 標準環境