Google Apps ScriptとCustomers Mail Cloudでメールを送信する

Google Apps ScriptはGoogleスプレッドシートやGoogleドキュメントなどで使えるマクロプログラミング環境で、JavaScriptライクな言語を使ってスクリプトを実行できます。今回はこのGoogle Apps Scriptを使って、Customers Mail Cloudでメール送信を行う方法を紹介します。

Customers Mail Cloudの設定

まずはCustomers Mail Cloudにて送信サーバの設定を行います。

ユーザ登録

ユーザ登録はまず、メールアドレスとパスワードを入力するところからはじまります。

f:id:moongift:20190510151017p:plain
ユーザ登録

入力したメールアドレス宛にメールアドレスの確認メール(仮登録受付メール)が届きますので、URLをクリックします。その後、名前や住所といった必要な情報を入力します。ユーザ登録が完了すると、無料トライアル開始のための審査が入ります。時間は長くとも30分程度です。「Customers Mail Cloud 無料トライアル利用開始のご案内」というメールが届いたら利用できます。

ログイン後に行うこと

ログインしたら、2つの作業を行う必要があります。

f:id:moongift:20190510150911p:plain
ダッシュボード

DKIMキーを設定する

DKIMキーはメールのなりすましを防止するための技術になります。メール配信を行うドメインのTXTレコードに対して設定します。管理コンソールでドメインを追加しようとすると、専用のキーが表示されます。

f:id:moongift:20190510150735p:plain
DKIMキーの取得

ドメインは s999999999999._domainkey.example.com のような形式になります。設定する値は v=DKIM1; p=MIG...QAB のように指定されるはずです。この設定はシステム管理者などに依頼して行ってもらってください。

DNS設定はすぐに反映されませんので、数分後にDNSを確認ボタンを押します。正しく設定されていれば、ドメインが追加登録できます。

ユーザを追加する

次にメール配信を行うユーザを追加します。これはAPI設定にて行います。ユーザ名(メールアドレス形式)、パスワードを設定します。また、利用できる機能を制限できます。例えばSMTPのみ、APIのみといった指定も可能です。

f:id:moongift:20190510150841p:plain
ユーザの追加

サーバに設定を反映する

設定を行ったら、それをサーバに反映します。サーバ構成機能にて行います。この反映を行わないと、DKIMやユーザ追加設定が反映されませんので注意してください。ここまでで以下の情報が入手できているはずです。

  • APIユーザ
  • APIキー

さらにAPIサーバのエンドポイントURLが必要です。これは契約しているプランによって異なりますのでご注意ください。

プラン名 エンドポイントURL
無料トライアル https://sandbox.smtps.jp/api/v2/emails/send.json
Standardプラン https://te.smtps.jp/api/v2/emails/send.json
Proプラン https://SUBDOMAIN.smtps.jp/api/v2/emails/send.json

これらの情報はメール送信時に設定しますので覚えておいてください。

Googleスプレッドシートを作成する

今回はGoogle Driveでスプレッドシートを作成します。スプレッドシートを作成した後、ツールメニューのスクリプトエディタを選びます。

f:id:moongift:20191118175747p:plain
スプレッドシートのメニュー

コードについて

APIキーをコード中に直接書き込むのは良くないので、ファイルメニューのプロジェクトのプロパティを選択します。

f:id:moongift:20191118175805p:plain
スクリプトエディタのメニュー

そしてスクリプトのプロパティとして以下の二つを定義します。

プロパティ
API_USER Customers Mail Cloudで作成したAPIユーザの値
API_KEY Customers Mail Cloudで作成したAPIキーの値

Code.gs について解説します。まず上記の設定内容を読み込みます。アクセス先のURLも上記のプランに応じた値を指定します。

var url = 'https://sandbox.smtps.jp/api/v2/emails/send.json';
var s = PropertiesService.getScriptProperties();
var api_user = s.getProperty('API_USER');
var api_key = s.getProperty('API_KEY');

処理内容

今回はmyFunctionの中に記述していきます。

function myFunction() {
  // ここに処理を記述します
}

まず送信先、送信元を定義します。

var to = [{
  name: 'John Doe',
  address: 'mail@smtps.jp'
}];

var from = {
  name: 'Customer Cloud Mail Admin',
  address: 'info@smtps.jp'
};

件名と本文を定義します。

var subject = 'テストメール';
var text = [
  'このメールはテストメールです。',
  '改行を入れます。',
  '',
  '----',
  'フッターです'
].join("\n");

Customers Mail Cloudにリクエストする内容を作ります。先ほど取得したapi_user、api_keyも利用します。

var params = {
  api_user: api_user,
  api_key: api_key,
  to: to,
  from: from,
  subject: subject,
  text: text
};

そしてメール送信APIを呼び出します。Google Apps ScriptのURLアクセスはUrlFetchAppオブジェクトを使います。

var options = {
 "method" : "post",
 "contentType" : "application/json",
 "payload" : JSON.stringify(params)
};

var body = UrlFetchApp.fetch(url, options);

メール送信を試す

では実際にメールを送信してみます。このMyFunctionを実行すれば良いのですが、初回実行時にはネットワークアクセスを許可する必要があります。

f:id:moongift:20191118175911p:plain
ネットワークアクセスの許諾

そして実行した結果(body)をログ出力すると、以下のように結果が返ってきます。

{"id":"<2106857532.1251.1565150810829@mta02.sandbox.smtps.jp>"}

まとめ

Googleスプレッドシートと組み合わせると、送信先のリスト管理してまとめて送信するといったワークフローも簡単に実現できます。Customers Mail Cloudと組み合わせることで、サーバレスでのメール送信が簡単にできます。ぜひお試しください!

クラウドからのメール送信を簡単に。確実に。| Customers Mail Cloud