Mailjet でのメールの送信

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

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

準備

  1. Mailjet の Google パートナー ページ*で新しい Mailjet アカウントを作成します。登録時に、メール メッセージの送信元として使用するドメインとメールアドレスを指定します。

  2. Mailjet SMTP アカウントの認証情報を取得します

次に、以下の例に沿って、メール構成をセットアップします。最も一般的な SMTP サーバー、ライブラリ、フレームワークとの統合の例を含む、その他のメール ソリューションに関する各種のドキュメントについては、Mailjet のドキュメントをご覧ください。

Postfix でのリレーの構成

Mailjet をメールリレーとして構成すると、リモート配信が指定されたメールを Postfix で転送できます。

  1. SSH を使用してインスタンスに接続します。

    gcloud compute ssh INSTANCE
    
  2. Postfix Mail Transport Agent をインストールします。プロンプトが表示されたら、ドメイン名についてはデフォルトの選択を受け入れますが、Local Only の構成を選択します。

    Debian


    user@test-instance:~# sudo apt-get update && sudo apt-get install postfix libsasl2-modules -y
    

    CentOS


    user@test-instance:~# sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  3. Postfix の構成オプションを変更します。Postfix の構成オプションは main.cf ファイルで設定されています。任意のテキスト エディタでこのファイルを開きます。

    user@test-instance:~# sudo vi /etc/postfix/main.cf
    
  4. 次の行が存在する場合は、これらの行をコメントアウトします。

    # default_transport = error
    # relay_transport = error
    
  5. 次の行をファイルの末尾に追加して、Mailjet SMTP サービスを追加します。

    relayhost = in.mailjet.com:2525
    
  6. 次に、以下の行を追加して、SSL / TLS のサポートを適用し、これらのリクエストに対して STMP 認証を構成します。SASL(Simple Access and Security Layer)モジュールによって、Postfix の構成で認証が処理されます。次の行をファイルの末尾に追加します。

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    

    変更を保存し、ファイルを閉じます。

  7. 任意のテキスト エディタで SASL パスワード マップを作成します。

    user@test-instance:~# sudo vi /etc/postfix/sasl_passwd
    
  8. sasl_passwd ファイルに次の行を追加して Mailjet の認証情報を指定します。

    in.mailjet.com:2525 YOUR_SMTP_KEY:YOUR_SMTP_SECRET
    
  9. postmap ユーティリティを使用して .db ファイルを生成します。

    user@test-instance:~# sudo postmap /etc/postfix/sasl_passwd
    user@test-instance:~# sudo ls -l /etc/postfix/sasl_passwd*
    -rw------- 1 root root    68 Jun  1 10:50 /etc/postfix/sasl_passwd
    -rw------- 1 root root 12288 Jun  1 10:51 /etc/postfix/sasl_passwd.db
    
  10. 認証情報を含むファイルは不要となったため、このファイルを削除します。

    user@test-instance:~# sudo rm /etc/postfix/sasl_passwd
    
  11. .db ファイルに対する権限を設定します。

    user@test-instance:~# sudo chmod 600 /etc/postfix/sasl_passwd.db
    user@test-instance:~# sudo ls -la /etc/postfix/sasl_passwd.db
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  12. 最後に、構成を再読み込みして、変更したパラメータを読み込みます。

    Debian


    user@test-wheezy:~# sudo /etc/init.d/postfix restart
    

    CentOS


    [user@test-centos ~]# sudo postfix reload
    

  13. 構成をテストします。mailx または mailutils パッケージをインストールし、構成をテストします。

    Debian


    user@test-wheezy:~# sudo apt-get install mailutils -y
    

    CentOS


    [user@test-centos ~]# sudo yum install mailx -y
    

    テスト メッセージを送信します。

     user@test-instance:~# echo 'Test passed.' | mail -s Test-Email EMAIL@EXAMPLE.COM
    

    システムログを調べて、status を含むステータス行と正常なサーバー レスポンス コード (250) を確認します。

    Debian


    user@test-wheezy:~# sudo tail -n 5 /var/log/syslog
    

    CentOS


    [user@test-centos ~]# sudo tail -n 5 /var/log/maillog
    

Mailjet での Postfix の設定に関する問題が発生した場合は、Mailjet の Postfix セットアップ手順をご覧ください。

Java を使用したメールの送信

Debian
  1. SSH を使用してインスタンスに接続します。
    gcloud compute ssh [INSTANCE_NAME]
  2. パッケージ リポジトリを更新し、必要なパッケージをインストールします。
    user@test-instance:~# sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven
  3. GitHub から Java リポジトリのクローンを作成します。
    user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. 次の場所にあるこの例のメイン ソースコードに移動します。
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. 次のように、Mailjet の設定を指定します。

    • YOUR-MAILJET-API-KEY 変数を Mailjet アカウントの API キーに置き換えます。
    • YOUR-MAILJET-SECRET-KEY 変数を Mailjet アカウントの対応する秘密鍵に置き換えます。

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        MailjetClient client = new MailjetClient(
            mailjetApiKey, mailjetSecretKey, new ClientOptions("v3.1"));
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
            throws MailjetException, MailjetSocketTimeoutException {
        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
          System.out.println(response.getStatus());
          System.out.println(response.getData());
          return response;
        } catch (MailjetException e) {
          System.out.println("Mailjet Exception: " + e);
          return null;
        }
      }
    }
  6. mailjet ディレクトリから、Maven を使用して、クラスを JAR ファイルとしてパッケージ化します。
    user@test-instance:~# mvn clean package
  7. OpenJDK 8 を使用していることを確認します。
    user@test-instance:~# sudo update-alternatives --config java
  8. ターゲット ディレクトリからメールを送信するには、受信者と送信者のメールアドレスを引数として指定して JAR ファイルを実行します。
    user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]
CentOS
  1. SSH を使用してインスタンスに接続します。
    gcloud compute ssh [INSTANCE_NAME]
  2. パッケージ リポジトリを更新し、必要なパッケージをインストールします。
    user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
  3. GitHub から Java リポジトリのクローンを作成します。
    user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. 次の場所にあるこの例のメイン ソースコードに移動します。
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. 次のように、Mailjet の設定を指定します。

    • YOUR-MAILJET-API-KEY 変数を Mailjet アカウントの API キーに置き換えます。
    • YOUR-MAILJET-SECRET-KEY 変数を Mailjet アカウントの対応する秘密鍵に置き換えます。

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        MailjetClient client = new MailjetClient(
            mailjetApiKey, mailjetSecretKey, new ClientOptions("v3.1"));
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
            throws MailjetException, MailjetSocketTimeoutException {
        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
          System.out.println(response.getStatus());
          System.out.println(response.getData());
          return response;
        } catch (MailjetException e) {
          System.out.println("Mailjet Exception: " + e);
          return null;
        }
      }
    }
  6. mailjet ディレクトリから、Maven を使用して、クラスを JAR ファイルとしてパッケージ化します。
    user@test-centos:~# mvn clean package
  7. OpenJDK 8 を使用していることを確認します。
    user@test-centos:~# sudo alternatives --config java
  8. ターゲット ディレクトリからメールを送信するには、受信者と送信者のメールアドレスを引数として指定して JAR ファイルを実行します。
    user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]

Node.js を使用したメールの送信

以下の手順では、Debian Wheezy 上で Mailjet と Node.js を使用する方法について説明します。

Debian
  1. SSH を使用してインスタンスに接続します。
    gcloud compute ssh [INSTANCE_NAME]
  2. パッケージ リポジトリを更新します。
    user@test-wheezy:~# sudo apt-get update
  3. Node.js の依存関係をインストールします。
    user@test-wheezy:~# sudo apt-get install git-core curl build-essential openssl libssl-dev -y
  4. GitHub から Node.js リポジトリのクローンを作成します。
    user@test-wheezy:~# git clone https://github.com/nodejs/node
  5. Node.js ソースツリーのディレクトリに移動します。
    user@test-wheezy:~# cd node
  6. この OS と仮想マシンのノード ソフトウェアを構成します。
    user@test-wheezy:~# ./configure
  7. Node.js、npm、関連オブジェクトをビルドします。
    user@test-wheezy:~# sudo make

    この処理が完了するまで数分かかることがあります。

  8. Node.js、npm、その他のソフトウェアをデフォルトの場所にインストールします。
    user@test-wheezy:~# sudo make install
  9. メーラー パッケージをインストールします。
    user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
  10. node ディレクトリ内に、次の JavaScript を含む、sendmail.js という名前の新しいファイルを作成します。
    const mailer = require('nodemailer');
    const smtp = require('nodemailer-smtp-transport');
    
    async function mailjet() {
      const transport = mailer.createTransport(
        smtp({
          host: 'in.mailjet.com',
          port: 2525,
          auth: {
            user: process.env.MAILJET_API_KEY || '<your-mailjet-api-key',
            pass: process.env.MAILJET_API_SECRET || '<your-mailjet-api-secret>',
          },
        })
      );
    
      const json = await transport.sendMail({
        from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
        to: 'EMAIL@EXAMPLE.COM', // To address
        subject: 'test email from Node.js on Google Cloud Platform', // Subject
        text: 'Hello!\n\nThis a test email from Node.js.', // Content
      });
      console.log(json);
    }
  11. プログラムを実行して、Mailjet を介してメール メッセージを送信します。
    user@test-wheezy:~# node sendmail.js
CentOS
  1. SSH を使用してインスタンスに接続します。
    gcloud compute ssh [INSTANCE_NAME]
  2. パッケージ リポジトリを更新します。
    user@test-centos:~# sudo yum update -y
  3. Node.js の依存関係をインストールします。
    user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y
    ...
    user@test-centos:~# sudo yum groupinstall "Development Tools" -y
    ...
  4. GitHub から Node.js リポジトリのクローンを作成します。
    user@test-centos:~# git clone https://github.com/nodejs/node
  5. Node.js ソースツリーのディレクトリに移動します。
    user@test-centos:~# cd node
  6. この OS と仮想マシンのノード ソフトウェアを構成します。
    user@test-centos:~# ./configure
  7. Node.js、npm、関連オブジェクトをビルドします。
    user@test-centos:~# sudo make

    この処理が完了するまで数分かかることがあります。

  8. Node.js、npm、その他のソフトウェアをデフォルトの場所にインストールします。
    user@test-centos:~# sudo make install
  9. メーラー パッケージをインストールします。
    user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
  10. node ディレクトリ内に、次の JavaScript を含む、sendmail.js という名前の新しいファイルを作成します。
    const mailer = require('nodemailer');
    const smtp = require('nodemailer-smtp-transport');
    
    async function mailjet() {
      const transport = mailer.createTransport(
        smtp({
          host: 'in.mailjet.com',
          port: 2525,
          auth: {
            user: process.env.MAILJET_API_KEY || '<your-mailjet-api-key',
            pass: process.env.MAILJET_API_SECRET || '<your-mailjet-api-secret>',
          },
        })
      );
    
      const json = await transport.sendMail({
        from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
        to: 'EMAIL@EXAMPLE.COM', // To address
        subject: 'test email from Node.js on Google Cloud Platform', // Subject
        text: 'Hello!\n\nThis a test email from Node.js.', // Content
      });
      console.log(json);
    }
  11. プログラムを実行して、Mailjet を介してメール メッセージを送信します。
    user@test-centos:~# node sendmail.js

Mailjet SMTP 設定

クライアントの構成に使用する Mailjet 固有の SMTP 設定を簡単に確認できるように、以下に示します。

  • ホスト: in.mailjet.com
  • ポート: 2525

* Google は、有料のアカウントに登録するお客様について、正当な対価を受け取ります。

Google Cloud Platform のその他の機能をお試しください。チュートリアルをご覧ください。

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

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

Compute Engine ドキュメント