べんりワザ・作ったものを公開する

問い合わせフォームを本当に送れるようにする

HTMLで作ったフォームは、そのままでは送信先がなく届きません。サーバーを用意せずにメールを受け取れる無料サービス3つを、実際の書き方つきで比べました。

HTMLで<form>を書いても、そのままではどこにも届きません。入力欄を作るのがHTMLの仕事で、受け取るのは別の役目だからです。ここでは、サーバーを用意せずに問い合わせを受け取れる無料サービス3つを、実際の書き方つきで比べます。

なぜ送信できないのか

フォームの送信ボタンを押すと、ブラウザはactionに書かれた宛先へ入力内容を届けようとします。

<form action="ここに送信先が必要">

この宛先=「受け取って、メールで知らせてくれるプログラム」が必要です。自前で用意するにはサーバーとプログラミングが要りますが、その部分だけを代行してくれるサービスを使えば、HTMLの1行を書きかえるだけで済みます。

3つの選択肢の比較

FormspreeNetlify FormsGoogleフォーム
手間HTMLに1行属性を1つ足すだけ埋め込みコードを貼る
見た目自分のデザインのまま自分のデザインのままGoogleの見た目になる
無料枠月50件月100件無制限
条件どこで公開してもOKNetlifyで公開している場合のみどこで公開してもOK
受け取り方メール管理画面+メール通知スプレッドシート+メール通知

Formspree

actionに発行されたURLを書くだけで、送信内容がメールで届くサービス。いま作ったフォームの見た目をそのまま使えます。公開場所を選ばないので、どんな環境でも使える万能型です。

Formspreeのトップページ。The production-ready form backendの見出しと、赤いGet Started Nowボタンが表示されている
サインアップしてフォームを1つ作ると、専用の送信先URLが発行されます。

Formspree

使い方は、発行されたURLをactionに貼り、method="POST"を足すだけです。

<form action="https://formspree.io/f/あなたのID" method="POST">
  <label for="email">メールアドレス</label>
  <input type="email" name="email" id="email" required>

  <label for="message">メッセージ</label>
  <textarea name="message" id="message" required></textarea>

  <button type="submit">おくる</button>
</form>

Netlify Forms

Netlifyでサイトを公開している場合に使える機能。フォームタグに属性を1つ足すだけで、公開時にNetlifyが自動で受け取り役を用意してくれます。

Netlifyのトップページ。Push your ideas to the webの見出しとStart buildingボタンが表示されている
サイトの公開とフォームの受け取りが1か所でまとまるのが利点です。

Netlify

<form name="contact" method="POST" data-netlify="true">
  <label for="name">おなまえ</label>
  <input type="text" name="name" id="name" required>

  <label for="message">メッセージ</label>
  <textarea name="message" id="message" required></textarea>

  <button type="submit">おくる</button>
</form>

data-netlify="true"が合図です。届いた内容はNetlifyの管理画面に一覧で残り、メール通知も設定できます。

べんりワザ作ったサイトをネットに公開する方法Netlifyでのサイト公開のしかたはこちらの記事へ1

Googleフォーム

フォーム自体をGoogleで作り、できあがったものを自分のページに埋めこむ方法。回答は自動でスプレッドシートにたまります。件数制限がなく、集計まで面倒を見てくれるのが強みです。

Googleフォームの紹介ページ。「オンラインフォームで分析情報を素早く取得」の見出しと、集計グラフのイラストが表示されている
アンケートの集計まで見据えるなら、この選択肢がいちばんラクです。

Googleフォーム

フォームを作ったあと、送信 → < >(埋め込み)で出てくるコードをHTMLに貼ります。

<iframe src="https://docs.google.com/forms/d/e/……/viewform?embedded=true"
        width="100%" height="800" frameborder="0">読み込んでいます…</iframe>

引きかえに、見た目はGoogleのデザインのままになります。サイトの雰囲気にそろえたいなら、前の2つが向いています。

迷ったらこの選び方

  • 自分のデザインのまま、どこで公開しても使いたいFormspree
  • Netlifyで公開しているNetlify Forms(追加の登録が不要)
  • 見た目より集計を優先したい・件数が多いGoogleフォーム

設置したら必ずやること

1. 自分でテスト送信する

公開後に自分で1件送って、実際にメールが届くかを必ず確認します。届かない原因の多くは、迷惑メールフォルダに入っているか、name属性の付け忘れです。

2. 迷惑メール対策を入れる

公開したフォームには、自動プログラムからの投稿が来ます。どのサービスにも対策機能(reCAPTCHAやハニーポット)が用意されているので、管理画面で有効にしておきましょう。

3. 個人情報の扱いを一言書く

メールアドレスなどを受け取るなら、フォームの近くに何に使うかを書き添えます。むずかしい文章は不要です。

<p>いただいた内容は、お返事のためだけに使います。</p>
HTMLフォームで入力をまとめようフォームのHTMLそのものの書き方は、HTMLコースのこの回で

まとめ

  1. HTMLのフォームは送信先(action)と受け取り役がないと届かない
  2. デザインを保ちたいならFormspree、Netlify利用中ならNetlify Forms、集計重視ならGoogleフォーム
  3. 設置したらテスト送信・迷惑メール対策・個人情報の一言の3点をセットで

問い合わせ先があるかどうかで、サイトは「見せるだけのもの」から「届くもの」に変わります。

よくある質問

HTMLとCSSだけで作ったフォームはなぜ送信できないのですか?
入力欄を作るのがHTMLの仕事で、受け取って保存やメール送信をするのは別のプログラム(サーバー側)の仕事だからです。送信先を指定して、その受け取り役を用意する必要があります。
JavaScriptだけでメールを送ることはできますか?
できません。ブラウザの中で動くJavaScriptには、メールを送る機能そのものがないためです。メール送信を代行してくれるサービスに送信内容を渡す形になります。
無料でお問い合わせフォームを設置する方法はありますか?
あります。Formspreeは月50件まで、Netlify Formsは月100件まで無料で使えます。Googleフォームは件数制限なしで無料です。