企業などで共有のメールアドレスを設定することはよくあります。例えば info@ であったり、 sales@ などです。企業であれば社内のメールサーバなどを設定すればいいでしょう。ドメイン部分は共通なので、管理しやすいはずです。
それに対してコミュニティやイベントの際に共通のメールアドレスを作りたいことがよくあります。問い合わせ用のメールアドレスを使うとき、連絡先窓口を統一したい時などです。そうした場合、個人個人別なドメインのメールアドレスになるので管理が煩雑になります。
さらに受信だけであればいいのですが、メールのFromに設定したいとなると、もっと複雑になります。適当に設定してメールを送信してもスパムメールと判定される可能性が高くなります。
そこでGoogleフォームを使って、共有のメールフォームする方法を紹介します。
Googleフォームについて
Googleフォームはシンプルです。件名や宛先、メール本文が書けるだけです。
そしてスクリプトエディタを使って、Google Apps Scriptを書きます。
今回は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について記述することで、ソースコードにそういった重要な情報を書かなくて済みます。
Fromは固定値
今回は複数人で共通のメールアドレスを使う目的なので、Fromは固定になります。
宛先と件名、本文を指定
宛先の指定は addTo
メソッドで行ってください。この情報はGoogleフォームで指定するものです。件名、本文はそれぞれプロパティを変更してください。
送信する
送信は send
メソッドで行います。メール送信がうまくいっていれば、次のようなログが返ってきます。
{ "id":"\u003C1867844705.17288.1575893073288@mta01.sandbox.smtps.jp\u003E" }
スクリプト実行のトリガーを設定
最後にスクリプトの実行トリガーを設定します。今回はフォームの送信時としています。
なお、これを5分ごとのタイマーとして、送信されているかどうかをGoogleスプレッドシートをチェックしながら行うようにすれば、万一ミスした時にも送信前に戻せる(行を消せばいいだけ)ようになります。運用ミスを防ぐためにお勧めです。
利点
まず大きな利点はメールサーバの設定を変更することなく、複数人で同じFromが利用できます。もう1つ、フォームの内容をGoogleスプレッドシートに保存する指定をすれば、自然と送信ログが蓄積されます。
なお、この宛先への返信や受け取った際の処理ですが、Google Apps ScriptでCustomers Mail CloudのWebhookを受け取るを使うことで、サーバレスで受け取ったメールをGoogleスプレッドシートに記録したり、さらにSlackへ通知することができます。
まとめ
Fromを統一しないと個人宛にメールが来てしまってステータスの管理も煩雑になります。かといって、そのためのシステムを作るのは大変でしょう。今回の方法であれば、サーバレスでほんの少しのGoogle Apps Scriptを書くだけで済みます。ぜひCustomers Mail CloudとともにGoogleフォームを活用してください。