Mailjet でのメールの送信

Mailjet は、毎月 25,000 件のメールの無料枠を App Engine ユーザーに提供するサードパーティのグローバル メールサービスです。また、Mailjet は以下も提供しています。

  • 取引メールやマーケティング メールを送信するための API、ユーザー インターフェース、SMTP リレー
  • 欧州のデータ プライバシー コンプライアンス
  • カスタマイズ可能な優先度の設定や自動スロットル管理など、メールと到達性に関する機能
  • サブアカウント、認証、連絡先、キャンペーン、カスタム ペイロード、統計、リアルタイムのイベント、Event API を介した解析を管理するための Go、PHP、Nodejs、Java、Python、Ruby の API リソース ライブラリ
  • 応答性の高い HTML メール テンプレートを作成するための統合 MJML フレームワーク
  • 4 種類以上の言語による 24 時間 365 日のフォローザサン サポート
  • gmail.com 以外のドメインからメールを送信する機能

始める前に

Mailjet でメールを送信する前に:

  1. Mailjet アカウントを作成します。Google App Engine デベロッパーは、1 か月あたり 25,000 件の無料メールから始めることができます。
  2. Mailjet で、送信者のメールアドレスを追加して確認します。
  3. Mailjet SMTP 設定から API キーとシークレットをメモします。
  4. Google Cloud Platform プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

設定

  1. 必要な jersey REST クライアント モジュールをアプリケーションに追加します。たとえば Maven を使用する場合は、プロジェクトの pom.xml に次のように追加します。
    Java 7
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-client</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey.contribs</groupId>
      <artifactId>jersey-multipart</artifactId>
      <version>1.19.4</version>
    </dependency>
    Java 8
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-core</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-client</artifactId>
      <version>1.19.4</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey.contribs</groupId>
      <artifactId>jersey-multipart</artifactId>
      <version>1.19.4</version>
    </dependency>
  2. appengine-web.xml ファイルで API キーやドメイン名などの Mailjet 設定を構成します。
    <env-variables>
      <env-var name="MAILJET_API_KEY" value="YOUR-MAILJET-API-KEY" />
      <env-var name="MAILJET_SECRET_KEY" value="YOUR-MAILJET-SECRET-KEY" />
    </env-variables>
  3. アプリケーション コードに Mailjet ライブラリをインポートします。
    
    package com.example.appengine.mailjet;
    
    import com.mailjet.client.ClientOptions;
    import com.mailjet.client.MailjetClient;
    import com.mailjet.client.MailjetRequest;
    import com.mailjet.client.MailjetResponse;
    import com.mailjet.client.errors.MailjetException;
    import com.mailjet.client.errors.MailjetSocketTimeoutException;
    import com.mailjet.client.resource.Emailv31;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.json.JSONArray;
    import org.json.JSONObject;
    

メールの送信

アプリケーション コードでメッセージを送信するには:

  1. 新しい Mailjet クライアントを作成します。

  2. 送信者のメールアドレスと名前、件名、メッセージ本文、受信者など、メッセージの詳細と内容を指定します。

  3. サーバーのレスポンスを取得し、メッセージのステータスを確認します。

例:

Java 7
@SuppressWarnings("serial")
public class MailjetServlet extends HttpServlet {
  private static final String MAILJET_API_KEY = System.getenv("MAILJET_API_KEY");
  private static final String MAILJET_SECRET_KEY = System.getenv("MAILJET_SECRET_KEY");
  private MailjetClient client = new MailjetClient(
      MAILJET_API_KEY, MAILJET_SECRET_KEY, new ClientOptions("v3.1"));

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException,
      ServletException {
    String recipient = req.getParameter("to");
    String sender = req.getParameter("from");

    MailjetRequest email = new MailjetRequest(Emailv31.resource)
        .property(Emailv31.MESSAGES, new JSONArray()
        .put(new JSONObject()
            .put(Emailv31.Message.FROM, new JSONObject()
            .put("Email", sender)
            .put("Name", "pandora"))
            .put(Emailv31.Message.TO, new JSONArray()
            .put(new JSONObject().put("Email", recipient)))
            .put(Emailv31.Message.SUBJECT, "Your email flight plan!")
            .put(
                Emailv31.Message.TEXTPART,
                "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
            .put(
                Emailv31.Message.HTMLPART,
                "<h3>Dear passenger, welcome to Mailjet!</h3><br /> "
                    + "May the delivery force be with you!")));

    try {
      // trigger the API call
      MailjetResponse response = client.post(email);
      // Read the response data and status
      resp.getWriter().print(response.getStatus());
      resp.getWriter().print(response.getData());
    } catch (MailjetException e) {
      throw new ServletException("Mailjet Exception", e);
    } catch (MailjetSocketTimeoutException e) {
      throw new ServletException("Mailjet socket timed out", e);
    }
  }
}
Java 8
@SuppressWarnings("serial")
public class MailjetServlet extends HttpServlet {

  private static final String MAILJET_API_KEY = System.getenv("MAILJET_API_KEY");
  private static final String MAILJET_SECRET_KEY = System.getenv("MAILJET_SECRET_KEY");
  private MailjetClient client = new MailjetClient(MAILJET_API_KEY, MAILJET_SECRET_KEY);

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    String recipient = req.getParameter("to");
    String sender = req.getParameter("from");

    MailjetRequest email =
        new MailjetRequest(Email.resource)
            .property(Email.FROMEMAIL, sender)
            .property(Email.FROMNAME, "pandora")
            .property(Email.SUBJECT, "Your email flight plan!")
            .property(
                Email.TEXTPART,
                "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
            .property(
                Email.HTMLPART,
                "<h3>Dear passenger, welcome to Mailjet!</h3><br/>May the delivery force be with "
                    + "you!")
            .property(
                Email.RECIPIENTS, new JSONArray().put(new JSONObject().put("Email", recipient)));

    try {
      // trigger the API call
      MailjetResponse response = client.post(email);
      // Read the response data and status
      resp.getWriter().print(response.getStatus());
      resp.getWriter().print(response.getData());
    } catch (MailjetException e) {
      throw new ServletException("Mailjet Exception", e);
    } catch (MailjetSocketTimeoutException e) {
      throw new ServletException("Mailjet socket timed out", e);
    }
  }
}

統計情報

Mailjet Send API 呼び出しのレスポンス ペイロードには MessageID が含まれています。MessageID を使用して、メッセージに関する情報と統計情報にアクセスできます。

/message に対する Mailjet API の GET オペレーションでは、送信者、受信者、メッセージ サイズなどのメッセージに関する基本情報が返されます。さらに、正常に送信されたかどうかなどのメッセージの現在の状態も返されます。サンプル API レスポンスを含むメッセージ統計情報の詳細については、Mailjet API ガイドをご覧ください。

Event API

Mailjet Event API は、メッセージの送信時刻や開封時刻など、送信されたメッセージに関連したイベントについてのリアルタイム通知を、HTTP リクエスト(Webhook)を使って行います。このイベント通知は、取引キャンペーンからマーケティング キャンペーンに至るまであらゆる種類のメッセージにおいて機能します。

Event API を使用すると、お客様に送信されたマーケティング メッセージのロギングや顧客管理(CRM)システムで登録解除された連絡先の更新などの特定のアクションを効率的に実行できます。イベントの発生時にほぼリアルタイムでデータが push されるので、1 日に何回か Mailjet API をポーリングする必要がなくなります。

イベントをグループ化することもできます。これは、送信量が多い場合に役立ちます。詳細な手順については、Mailjet のドキュメントをご覧ください。

受信メールの Parse API

さらに Mailjet では、メールを受信して解析し、Webhook に内容を配信できます。Mailjet ですべての情報を整理できるため、それを CRM やデータベースに保存できます。

Event API と同様に Parse API は、定義された Webhook にほぼリアルタイムで通知します。Webhook は、新しいメッセージのルートが事前定義されたものと一致すると、データをアプリケーションに返送します。送信者、受信者、件名、本文、ヘッダーなどの必要なすべての有益な情報を含んだ JSON パケット構造のメールがアプリケーションに送信されます。

各メールで送信される追加のフィールドなどの詳細と、DNS セットアップと使用の手順については、Mailjet の Parse API のドキュメントをご覧ください。

Google Compute Engine からのメールの送信

プロジェクトで Compute Engine を使用して、メール送信の必要があるバックエンド タスクを実行する場合、Compute Engine で Mailjet を使用することもできます。

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

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

Java 8 の App Engine スタンダード環境