みんなで使える共有メールアドレスをGoogleフォームで実現する

企業などで共有のメールアドレスを設定することはよくあります。例えば info@ であったり、 sales@ などです。企業であれば社内のメールサーバなどを設定すればいいでしょう。ドメイン部分は共通なので、管理しやすいはずです。

それに対してコミュニティやイベントの際に共通のメールアドレスを作りたいことがよくあります。問い合わせ用のメールアドレスを使うとき、連絡先窓口を統一したい時などです。そうした場合、個人個人別なドメインのメールアドレスになるので管理が煩雑になります。

さらに受信だけであればいいのですが、メールのFromに設定したいとなると、もっと複雑になります。適当に設定してメールを送信してもスパムメールと判定される可能性が高くなります。

そこでGoogleフォームを使って、共有のメールフォームする方法を紹介します。

Googleフォームについて

Googleフォームはシンプルです。件名や宛先、メール本文が書けるだけです。

f:id:moongift:20200917173438p:plain

そしてスクリプトエディタを使って、Google Apps Scriptを書きます。

f:id:moongift:20200917173758p:plain

今回はSendFormという関数としています。Googleフォームで送られてきたデータは e.namedValues で取得できます。この内容をCustomers Mail CloudのGASライブラリに適用します。1つ1つのコードはコメントを参考にしてください。

function sendForm(e) {
  // Googleフォームから送られてきた情報
  const params = e.namedValues;

  // Customers Mail CloudのGASライブラリ
  const c = new CustomersMailCloud.Client(apiUser, apiKey);
  // APIキーはスクリプトのプロパティで設定
  const s = PropertiesService.getScriptProperties();
  const apiUser = s.getProperty('API_USER');
  const apiKey = s.getProperty('API_KEY');
  // Fromは固定値で設定
  c.setFrom('Customers Mail Cloud', 'info@smtps.jp');
  // trial / standard / proのいずれかを実行
  c.trial();

  // 宛先を設定
  const email = params['To / Email address'].join('');
  const name  = params['To / Name'].join('');
  c.addTo(name, email);

  // 件名と本文を設定
  c.subject = params['Subject'].join('');
  c.text = params['Message'].join('');
  // 送信
  const res = c.send();
}

Customers Mail CloudのGASライブラリについて

Customers Mail Cloudはライブラリで 1RegQzjZLiJUacopzEoxmpTe5_vp7LP3r01aa-D9rf4sJRPZkifI4Mf7K を指定してください。

プロジェクトのプロパティ

ファイルメニューのプロジェクトのプロパティから呼び出せます。これはいわば環境変数のようなものです。ここでAPI_USERやAPI_KEYについて記述することで、ソースコードにそういった重要な情報を書かなくて済みます。

f:id:moongift:20200917173503p:plain

Fromは固定値

今回は複数人で共通のメールアドレスを使う目的なので、Fromは固定になります。

宛先と件名、本文を指定

宛先の指定は addTo メソッドで行ってください。この情報はGoogleフォームで指定するものです。件名、本文はそれぞれプロパティを変更してください。

送信する

送信は send メソッドで行います。メール送信がうまくいっていれば、次のようなログが返ってきます。

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

スクリプト実行のトリガーを設定

最後にスクリプトの実行トリガーを設定します。今回はフォームの送信時としています。

f:id:moongift:20200917173606p:plain

なお、これを5分ごとのタイマーとして、送信されているかどうかをGoogleスプレッドシートをチェックしながら行うようにすれば、万一ミスした時にも送信前に戻せる(行を消せばいいだけ)ようになります。運用ミスを防ぐためにお勧めです。

利点

まず大きな利点はメールサーバの設定を変更することなく、複数人で同じFromが利用できます。もう1つ、フォームの内容をGoogleスプレッドシートに保存する指定をすれば、自然と送信ログが蓄積されます。

f:id:moongift:20200917173739p:plain

なお、この宛先への返信や受け取った際の処理ですが、Google Apps ScriptでCustomers Mail CloudのWebhookを受け取るを使うことで、サーバレスで受け取ったメールをGoogleスプレッドシートに記録したり、さらにSlackへ通知することができます。

まとめ

Fromを統一しないと個人宛にメールが来てしまってステータスの管理も煩雑になります。かといって、そのためのシステムを作るのは大変でしょう。今回の方法であれば、サーバレスでほんの少しのGoogle Apps Scriptを書くだけで済みます。ぜひCustomers Mail CloudとともにGoogleフォームを活用してください。

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