Contact Forms
お問い合わせフォームビルダー:ページにフォームを埋め込み、すべての送信を保存し、サイトのプロバイダー経由でメールを送信します。
プラグイン
Contact Forms
お問い合わせフォームビルダー:ページにフォームを埋め込み、すべての送信を保存し、サイトのプロバイダー経由でメールを送信します。
説明
管理画面でお問い合わせフォームを作成し、ブロックで任意のページに配置して、内蔵の受信トレイですべての送信内容を確認できます。通知メールはサイトがすでに使っているプロバイダー経由で送られ、プラグイン自体がメールサービスと直接通信することはありません。
ライブデモ: emdashhq.com/contact — このプラグインが本番の EmDash サイトでレンダリングしている、実際に動作するフォームです。
主な機能
- フォーム — フォームの作成と編集、フィールド(text、email、tel、url、number、textarea、select、checkbox)の管理と並べ替え、削除せずにフォームを有効化または無効化。
- 送信受信トレイ — すべての送信内容を、送信元のページとともにサイトのデータベースに保存。フォーム、ステータス、メール結果で絞り込み、既読やアーカイブの設定、通知の再送信、CSV としてコピーができます。
- メールログ — すべての送信試行のステータス、所要時間、プロバイダーのエラーメッセージを記録するので、配信の失敗を黙って見逃さず原因を調べられます。
- ダッシュボードウィジェット — 未読数、有効なフォーム、最新の送信内容。
- スパム対策 — 非表示のハニーポット、最短入力時間のトラップ、IP ごとの 1 時間あたりの制限を初期設定で有効化。受け身のトラップでは足りない場合は、Cloudflare Turnstile を任意で利用できます。
- 保持期間 — 指定した日数より古い送信内容とログエントリを任意で削除。
訪問者のアドレスが公開フォーム定義に現れることはなく、フォームの宛先は管理画面にのみ存在します。
インストール
インストールと最初のフォーム
- EmDash の管理画面で Registry を開き、Contact Forms を検索して Install をクリックします。サイトのプロバイダー経由でのメール送信と、
challenges.cloudflare.comへの接続が求められます。このホストは Turnstile を有効にした場合にのみ使われます。 - Plugins → Contact forms → Settings を開き、既定の通知メールアドレスを設定します。フォームで上書きしていない場合、送信内容はここに送られます。
- Forms → New form を開きます。名前を付け、
contactのようなスラッグを指定して、フィールドを追加します。各フォームでは、宛先、件名テンプレート、ボタンのラベル、成功メッセージを上書きできます。 - Contact form ブロックでフォームをページに配置し、スラッグを入力します。テーマにまだこのブロックがない場合は、パッケージの
site/ディレクトリにコピーする 2 つのファイルがあります。seed 用のblock-type.jsonとレンダラー用のContactForm.astroで、手順は README に記載されています。 - Settings → Email でプロバイダーを有効にし、テストメールを送信します。プロバイダーがなくても送信内容は保存されます。ただしメールは送られず、その理由はメールログに表示されます。
最初の訪問者が送信すると、その内容は Plugins → Contact forms → Submissions とダッシュボードウィジェットに表示されます。
よくある質問
送信内容はどこに保存されますか?
サイト自身のデータベースの Plugins → Contact forms → Submissions に保存されます。第三者には何も送信されません。外部への通信は、プロバイダー経由の通知メールと、有効にした場合の Turnstile 検証だけです。
プロバイダーを設定していなくてもメールは送信されますか?
いいえ。ただし問題ありません。送信内容はメールのステータス skipped で保存されます。Settings → Email でプロバイダーを有効にすると、通知と訪問者への確認メールの送信が始まり、メールログにすべての試行が記録されます。
スパムはどのように防ぎますか?
3 つの受け身の防御が常に有効です。非表示のハニーポットフィールド、最短入力時間のトラップ、そして設定で調整できる IP ごとの 1 時間あたりの送信制限です。それでも足りない場合は、Cloudflare Turnstile のサイトキーとシークレットキーをプラグイン設定に貼り付けると、何かを保存する前にすべてのフォームが検証されます。
訪問者は確認メールを受け取れますか?
はい。フォームは独自の件名テンプレートを使って、訪問者に確認メールを送れます。件名テンプレートには送信されたフィールドの値を使え、通知メールへの返信は訪問者のメールフィールドに届きます。
送信内容を取り出せますか?
送信ページでは、絞り込み後の表示を CSV としてコピーできます。認証済みの export ルートも同じ CSV を提供するので、スクリプトや API トークンから利用できます。
送信内容を自動で削除できますか?
プラグイン設定の Keep submissions for (days) を設定します。スケジュールされたタスクが、上限より古い送信内容とメールログのエントリを削除します。0 ならすべて保持します。
公開フォームは宛先アドレスを公開しますか?
いいえ。公開フォームのルートが返すのはフィールド、ラベル、オプションだけで、宛先と通知設定が管理画面の外に出ることはありません。
変更履歴
1.1.2
- 必須のチェックボックスは、省略された値や無効な値を黙って通さず、拒否するようになりました。
- 送信内容はメール処理より前に保存されます。その後でプロバイダーが失敗しても、その行は失敗としてマークされるだけでメッセージが失われることはなく、訪問者には保存済みの応答が返ります。
- 送信の再試行は冪等です。スラッグ、IP、値から作るフィンガープリントにより、重複した行と重複したメールを抑制します。
- 拒否された送信は、一度限りの復旧レコードを通じて、フィールドごとのエラーとともにフォームへ再入力されます。
- Turnstile の検証には 10 秒の期限があり、障害時のポリシーを設定できます(既定では受け入れ)。
- IP ごとのレート制限はアトミックで、Turnstile より先に上限を消費します。
cf_のフィールドキーは送信プロトコル用に予約されており、管理画面では拒否されます。- CSV エクスポートと管理画面のプレビューでは、スプレッドシートの数式インジェクションを無効化します。
- 1 時間ごとのクリーンアップで、古いレートバケット、復旧レコード、冪等性の確保も削除するようになりました。
- ドキュメント:ライブデモのリンクに UTM パラメーターを付与しました。
1.1.1
- レジストリの掲載情報に、アイコン、バナー、スクリーンショット、インストールガイド、よくある質問、そしてこの変更履歴が加わりました。プラグイン自体に変更はありません。
1.1.0
- すべてのフォームで Cloudflare Turnstile 検証を任意で利用可能に。プラグイン設定にサイトキーとシークレットキーを設定すると、保存前に送信内容が検証されます。
- その検証のために、
challenges.cloudflare.comに限定した新しいnetwork:request権限を追加。 - 詳細なデバッグログの設定を追加。新しいメールプロバイダーを組み込む際に役立ちます。
1.0.0
- 最初のリリース。管理画面のフォームビルダー(8 種類のフィールド)、送信受信トレイ、メール配信ログ、ダッシュボードウィジェット。
ctx.email.send()を通じて、サイトで有効なプロバイダー経由で通知メールと訪問者への確認メールを送信。- ハニーポット、最短入力時間、IP ごとの 1 時間あたりのレート制限を初期設定で有効化。古い送信内容を削除する保持期間のクリーンアップは任意。
- 公開の
formとsubmitルート、およびsite/に同梱された Contact form ページブロック。