SendGrid でのメールの送信

SendGrid を使用することで、Google App Engine 上のメール機能を強化できます。SendGrid はメールの到達性を向上させ、アプリによって送信されたメールが実際にどうなったかについて透明性を提供します。SendGrid インターフェースまたは API を介して、オープン、クリック、登録解除、スパムレポートなどに関する統計情報を確認できます。

料金

Google App Engine をご利用のお客様は、毎月 12,000 通のメールを無料で送信できます。無料メールを利用するには、下記の手順で登録してください。容量増加プランも用意されています。

始める前に

初めに、次のことを行う必要があります。

  1. GCP Console で GCP プロジェクトを作成または選択します。プロジェクトに App Engine アプリケーションが含まれていることを確認します。

    App Engine に移動

    プロジェクトに App Engine アプリケーションが存在する場合には、ダッシュボードが開きます。存在しない場合には、App Engine アプリケーションを配置するリージョンを選択するように指示されます。

  2. Google Cloud Platform デベロッパーとして、GCP Console から SendGrid に登録すると、月に 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 を使用すると、メールの受信や送信済みメールの確認を簡単に行うことができます。2 つのリアルタイム webhook ソリューションにより、アプリケーションでのメール機能を強化できます。

Event API の使用

アプリからメールの送信を開始した後で、状況の確認が必要になる場合があります。この場合、SendGrid の統計情報が非常に役立ちます。Event API を使用すると、すべてのデータを収集し、確認できます。たとえば、受信者がメールを開いたりクリックしたりすると、SendGrid は非常に小さい JSON を Google App Engine アプリに送信します。これにより、イベントに対応するだけでなく、今後のためにデータを保存しておくこともできます。

イベントデータにはさまざまな用途があります。一般的には、メールの統計情報を内部ダッシュボードに統合して使用します。また、この情報を利用して登録の解除を行ったり、スパムレポートに迅速に作成できます。また、Event API を使用して過去数か月以内にクリックまたは開いたユーザーにだけメールを送信し、メールの効率性を向上させることもできます。

Event API ドキュメントには webhook の設定方法が記載されています。また、9 つのイベントタイプや、イベントのコールバックに含まれるフィールドについても解説しています。

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 8 の App Engine スタンダード環境