SendGrid でのメールの送信

SendGrid を使用することで、App Engine のメール機能を強化できます。SendGrid を使用すると、到達性が向上し、アプリによって送信されたメールの状況を把握することができます。SendGrid インターフェースまたは API を介して、開封数、クリック数、登録解除、スパムレポートなどに関する統計情報を確認できます。

料金

App Engine のお客様は、Google Cloud Platform Console を通じて SendGrid Email API プランに登録することで、毎月 12,000 通のメールを無料で送信できます。お客様が有料パッケージを申し込むと Google に報酬が支払われます。

SendGrid ライブラリ

SendGrid 経由でメールを送信するには、SMTP リレーまたは Web API を使用します。

SendGrid を App Engine プロジェクトに統合するには、SendGrid クライアント ライブラリを使用します。

始める前に

SendGrid を使用してメールを送信するには:

  1. SendGrid Email API プランに登録します。
  2. Sendgrid API キーをメモしておきます。
  3. Google Cloud Platform Console で GCP プロジェクトを選択するか、新しい GCP プロジェクトを作成し、次に App Engine アプリケーションが存在していることと課金が有効であることを確認します。

    App Engine に移動

    プロジェクトに App Engine アプリケーションがすでに存在し、課金が有効な場合、ダッシュボードが開きます。それ以外の場合には、プロンプトに従ってリージョンを選択し、課金を有効にします。
  4. app.yaml の環境変数セクションに SendGrid API キーを追加します。
  5. アプリケーションの composer.json ファイルに SendGrid PHP クライアント ライブラリを追加します。次に例を示します。
    composer require sendgrid/sendgrid

メールの送信

SendGrid インスタンスを作成し、メールの送信に使用します。

次のサンプルコードで、メールの送信方法とエラー処理の方法をご確認ください。

<?php
/**
 * Copyright 2016 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

// create the Silex application
$app = new Application();

$app->get('/', function () use ($app) {
    return <<<EOF
<!doctype html>
<html><body>
<form method="POST">
<input type="text" name="recipient" placeholder="Enter recipient email">
<input type="submit" name="submit">
</form>
</body></html>
EOF;
});

$app->post('/', function (Request $request) use ($app) {
    $sendgridSender = $app['sendgrid.sender'];
    $sendgridApiKey = $app['sendgrid.api_key'];
    $sendgridRecipient = $request->get('recipient');
    // $sendgridApiKey = 'YOUR_SENDGRID_APIKEY';
    // $sendgridSender = 'an-email-to-send-from@example.com';
    // $sendgridRecipient = 'some-recipient@example.com';
    $sender = new SendGrid\Email(null, $sendgridSender);
    $recipient = new SendGrid\Email(null, $sendgridRecipient);
    $subject = 'This is a test email';
    $body = new SendGrid\Content('text/plain', 'Example text body.');
    $mail = new SendGrid\Mail($sender, $subject, $recipient, $body);
    // send the email
    $sendgrid = new SendGrid($sendgridApiKey);
    $response = $sendgrid->client->mail()->send()->post($mail);
    if ($response->statusCode() < 200 || $response->statusCode() >= 300) {
        return new Response($response->body(), $response->statusCode());
    }
    return 'Email sent.';
});

return $app;

自身のアカウントの詳細を追加し、メールアドレスや他のメッセージの内容を編集します。

メール設定の詳細とサンプルについては、SendGrid-PHP ライブラリをご覧ください。

リアルタイム情報の取得

SendGrid はメールの送信だけでなく、メールの受信や webhook を使用して送信したメールを確認できます。

Event API

アプリケーションからメールの送信を開始すると、SendGrid が収集した統計情報を表示し、メール プログラムを評価することができます。このデータを表示するには、Event API を使用します。たとえば、受信者がメールを開いたりクリックしたりすると、SendGrid はわかりやすい JSON を Google App Engine アプリに送信します。これにより、イベントに対応するだけでなく、今後のためにデータを保存しておくこともできます。

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

Inbound Parse API

SendGrid はメールを受信できます。サポート チケットの自動化など、インタラクティブなアプリケーションには Inbound Parse API を利用できます。

Parse API は新しいメールが利用できる場合にデータをアプリケーションに送信する webhook です。この場合、受信メールに関連付けられたドメインに新しいメールが到着すると webhook が呼び出されます。

送信者、受信者、件名、本文を別々のフィールドとして含む JSON として構成されたアプリケーションにメールが送信されます。最大 20 MB のファイルの添付が可能です。

Parse API ドキュメントには、メールと一緒に送信される追加フィールドだけでなく、DNS の設定や使用方法なども記載されています。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

PHP の App Engine フレキシブル環境に関するドキュメント