問合せフォームの内容を、PHPでメール送信&Googleスプレッドシートにも追加する方法

問合せフォームの内容を、PHPでメール送信&Googleスプレッドシートにも追加する方法

今回は、

  • PHPのSendGrid公式ライブラリを使った、問合せフォームのサンプル
  • Zapierを使った、問合せフォームの内容をGoogleスプレッドシートにも追加する方法

についてご紹介します。

前提条件

  • SendGrid のアカウント
  • PHPの実行環境
  • Webサーバ
  • composer
  • git
  • Zapier のアカウント

なお今回は、PHP 8.0.19、composer 2.0.13、git 2.29.2の環境で動作を確認しました。

本記事の内容はMac上に環境構築したものですが、その他のOSでも基本的に手順は同じです。Windowsの場合、cpはcopyコマンドに読み替えてください。

準備

コードサンプルをリポジトリからクローンします。

git clone https://github.com/sendgridjp/sendgridjp-php-example-contact-form.git

リポジトリ内に移動して.env.exampleをコピーします。

cd sendgridjp-php-example-contact-form
cp .env.example .env

.envファイルを編集(後述)します。

composerによる依存関係の解決を行います。

composer install

.envファイルの編集

.envファイルは以下のような内容になっています。

SENDGRID_APIKEY=your_apikey
BCC=you@youremail.com
FROM=you@youremail.com
  • SENDGRID_APIKEY
    SendGridのAPIキーを指定してください。
  • BCC
    フォームの内容を送信する宛先を指定してください。
  • FROM
    フォームの内容を送信する際のFromアドレスを指定してください。

コードの実行

この問合せフォームは、HTML、CSS、PHPで構成されています。

入力フォーム(Form.html

問合せ内容を入力してSendボタンをクリックすると、formの内容を mailer.php にPOSTします。スタイルを変更する場合は、Form.css をカスタマイズしてください。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>問合せフォームサンプル</title>
<link rel="stylesheet" href="Form.css" />
</head>
<body>

<!-- 問合せフォーム ▼ここから▼ -->
<div id="contact">
	<div">
		<div">
		<center><h2>問合せフォーム</h2>
		<form class="contact" action="mailer.php" method="post">

		<!-- 入力項目をカスタマイズする場合は以下を変更します。mailer.phpのPOSTフィールドも合わせて変更してください。 -->
		<p>Name:</p>
		<input type="text" name="name" />

		<p>E-mail:</p>
		<input type="text" name="email" />

		<p>Subject:</p>
		<input type="text" name="subject" />

		<p>Message:</p>
		<textarea name="message" style="width: 45%; text-align: center;">Please leave a short message here</textarea></p>

		<input type="submit" value="Send"> <!-- Send button-->
		</form>
		</center>
		</div>
	</div>
</div>
<!-- 問合せフォーム ▲ここまで▲ -->

</body>
</html>
メール送信PHP(mailer.php

フォームの内容をメールで送信します。メール送信が完了すると thanks.html にリダイレクトします。

<?php
require 'vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createMutable(__DIR__);
$dotenv->load();


$sendgrid_apikey   = $_ENV['SENDGRID_APIKEY'];
$from              = $_ENV['FROM'];
$bcc               = $_ENV['BCC'];

$name = $_POST['name'];
$emailadd = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

$sendgrid = new SendGrid($sendgrid_apikey, array("turn_off_ssl_verification" => true));
$email    = new SendGrid\Mail\Mail();
$email->addTo($emailadd);
$email->addBcc($bcc);
$email->setFrom($from, "問合せフォーム");
$email->setSubject("[ContactForm] $subject");
$email->addContent("text/plain", "Name: $name \r\nEmail: $emailadd \r\nSubject: $subject \r\nMessage: $message \r\n");
$email->addContent("text/html", "<strong>Name:</strong> $name<br /> <strong>Email:</strong> $emailadd<br /> <strong>Subject:</strong> $subject<br /> <strong>Message:</strong> $message<br /> ");
$email->addCategory('contact');

$response = $sendgrid->send($email);
//var_dump($response);

// 正常終了時にthanks.htmlへリダイレクト
header('Location: thanks.html');
exit();

すべてのファイルをご自身のWebサーバにアップロードし、Form.html にアクセスしてください。問合せ内容を入力して「Send」ボタンをクリックすると、「E-mail」に入力した宛先(問合せ元の宛先)をTo、.env で指定した宛先(フォーム管理者の宛先など)をBccとしてメールが送信されます。

Form.html

送信後の画面(thanks.html)

送信後の画面(thanks.html)

送信されたメール

送信されたメール

Googleスプレッドシートに “Zap” する

Zapierロゴ

ここからは Zapier のアカウント(無料で作成できます)が必要になります。

今回は、Gmailで受信したメールの内容をGoogleドキュメントのスプレッドシートにPOSTしてみます。問合せフォームの送信先(.env の BCC の値)には、Gmailのメールアドレスを設定しておきましょう。

まずは、受信したメールの内容を投入するためのスプレッドシートを準備しておきます。適当なスプレッドシートを作成してください。

受信したメールの内容を投入するためのスプレッドシートを作成

続いて、Zapierの設定をします。ログインして ”Create A Zap” をクリックすると、画面上に手順が示されるので簡単に設定できます。

以下の通り、条件にマッチする新着メールがGmailに届いたらスプレッドシートに行を追加するよう連携を作成します(今回は、メールの件名に「[ContactForm]」を含むことを条件としました)。

条件にマッチする新着メールがGmailに届いたらスプレッドシートに行を追加するよう連携を作成

Gmail:

Gmail

スプレッドシート:

スプレッドシート

Zapierの設定ができたら、さきほどの問合せフォームからメールを送信します。しばらく待つと、スプレッドシートにメールの内容が追加されます。

スプレッドシートにメールの内容が追加される

このように、Zapierのセットアップはとても簡単です。”Zap” できるアプリが沢山用意されているので、色々と遊んでみてください。

参考

アーカイブ

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。