Google Apps Scriptからメールを送信するには

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 Apps Scriptでの実装について

Google Apps Scriptを新規作成すると、myFunctionという関数が書かれています。今回はその中に実装していきます。

まず変数を用意します。先ほど作成したAPIユーザとAPIキー、そして契約によって異なるエンドポイントURLを宣言します。

var url = 'https://sandbox.smtps.jp/api/v2/emails/send.json';
var api_user = 'api@smtps.jp';
var api_key  = 'PASSWORD';

次に送信元に関する情報を用意します。

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

さらに送信先に関する情報を用意します。これは複数設定できます。

var to = [{
  name: 'ユーザ',
  address: 'user@smtps.jp'
}];

件名、メール本文を用意します。

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

これらの変数をパラメータにまとめます。

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

Google Apps ScriptでHTTPリクエストを行うので、必要な情報をまとめます。

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

Google Apps ScriptでHTTPリクエストを行う場合はUrlFetchAppを使います。

var response = UrlFetchApp.fetch(url, options);
Logger.log(response);

初回実行時にはリモートアクセスの許可が求められます。

f:id:moongift:20191217102847p:plain
リモートアクセスの許可

メール送信がうまくいっていれば、次のようなログが返ってきます。

{
  "id":"\u003C1867844705.17288.1575893073288@mta01.sandbox.smtps.jp\u003E"
}

f:id:moongift:20191217102908p:plain
送信したメール

まとめ

Google Apps ScriptではSMTPによる接続は許可されていませんので、Web API経由でのメール送信になります。Customers Mail Cloudを使えば、簡単にメール送信が実装できます。Googleスプレッドシートに入力されている情報を使ったメール配信も簡単に実装できるでしょう。

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