背景
あるクライアントのマーケティング施策で、「アンケートに答えてくれた方へ、お礼として資料(PDF)を自動でお送りする」仕組みが必要になりました。回答と引き換えに資料をお渡しすることで、その先の顧客リスト(メールアドレス・所属・肩書など)につなげたい、という狙いです。
入り口はGoogleフォームで作ることにしました。手軽で、回答もスプレッドシートに貯まります。懸念は「回答をトリガーに、本文をカスタムしたお礼メールを、PDFを添付して自動送信する」となると、フォームの標準機能だけでは足りないというところです。標準の自動返信では、本文の自由なカスタマイズも、ファイルの添付も、選択肢による出し分けもできないのです。
GASで補う
そこで使ったのがGAS(Google Apps Script)です。Googleフォームには、回答が送信されたタイミングでスクリプトを走らせる仕組みがあります。ここに「回答からメールアドレスを取り出し、指定したPDFを添付して、お礼メールを送る」という短い処理を書けば、やりたいことはひと通り実現できます。実装の難易度そのものは、思ったより低めでした。
まずは欲張らず、一番シンプルな形(1つのフォーム → 1通のメール → 1つのPDF)から始めました。フォームの先頭にメールアドレスの質問を置き、続けて氏名や所属などを尋ねます。あとはPDFをGoogle Driveに置いて、そのファイルをスクリプトから添付するだけです。
自分のアカウントでテスト送信したところ、PDF添付のお礼メールが期待どおりに届きました。ここまでは順調です。設定の途中で「このアプリはGoogleに確認されていません」という警告が出ますが、これは自作スクリプトでは毎回出るもので、承認して問題ありませんでした。
本当の壁は「作ること」ではなく「届くこと」だった
つまずいたのは、その先でした。クライアントのアカウントに仕組みを移して(資料が2種類あったので、フォームも2つ用意しました)テスト送信したところ、自動送信したメールが迷惑メールフォルダに振り分けられてしまうことが分かりました。Gmailの表示理由は「以前迷惑メールと判断されたメールに類似しています」というものでした。
これは地味に効きます。せっかく資料を自動で送っても、相手の迷惑メールフォルダに沈んでしまえば、届いていないのと同じだからです。
いくつか対策を検討しました。HTMLメールにしてリンクを貼る方法は、かえってスパム判定を強める可能性があり見送り。PDF添付をやめても、添付の有無は根本原因ではありません。AIと相談した結果、行き着いたのは、送信元ドメインの信頼性を上げることでした。
具体的には、送信に使っている独自ドメインに対して、DKIM・SPF・DMARCという3つの送信ドメイン認証を設定します。ざっくり言えば「このメールは確かにこのドメインから正規に送られたものです」とDNS側で証明する仕組みで、なかでもDKIMの効果が大きいとされています。完全にスパム判定を防げるわけではありませんが、大幅な改善が見込めます。
ただしDNSの設定はドメインの管理者権限が必要なので、ここはクライアントと相談しながら進めることになりました。「作る」よりも、この「確実に届ける」ための調整のほうが、時間も気配りも要る部分だと実感しています。
クライアントと相談した結果「迷惑メールになるのは仕方ないので、迷惑メールになる可能性があるので注意してね。と注意喚起の文をフォームに入れる」という対策に落ち着きました。送信ドメイン認証の設定をクライアントに設定してもらうのはハードルが高く、時間もあまりなかったという背景で、アナログな対策に着地しました。
これから
選択肢による分岐(回答内容に応じてPDF-A / PDF-B / 両方を出し分ける)も構想にはありますが、まずは今の1通の仕組みを回すことを優先し、そちらは保留にしています。迷惑メール対策も、今回はフォームでの注意喚起というアナログな形でしのいでいるので、いずれ機会があれば送信ドメイン認証(DKIM/SPF/DMARC)をきちんと整えたいところです。
やってみて
やる前は「フォームとスクリプトをつなぐところが山場だろう」と思っていました。ところが実際に手こずったのは、コードの中身ではなく「メールがちゃんと相手に届くか」という、もっと手前のところでした。技術的に動いていても、実務で動かないことはよくあるなと改めて感じ、実環境でのテストの大切さを感じました。また、対策は「問題がおきたらごめん!対応して!」という、受け手側の判断に依存するアナログなものになりましたが、技術がどこまで進んでもこういうアナログな手法はなくならないのだろうなと思いました。