EP.2

見た目は完成。でも最初の問い合わせは届かなかった

花屋デモに安全な送信処理を追加し、実サーバーで受信まで検証しました。未送信と文字化けをどう直したか記録します。

「花と日々」の相談フォームには、名前、メールアドレス、ご相談内容を入力できます。空欄やメールアドレスの形式も確認します。

最初の版はここまでで、送信しても花屋には一通も届きませんでした。その後、レンタルサーバーで動く送信処理を追加し、実際の受信箱に届くところまで検証しました。

相談フォームを自分で試す

最初の版で届かなかった理由

ブラウザに表示されるフォームは、受付カウンターに置いた用紙のようなものです。書き終わった用紙を店員へ渡し、保管し、必要なら返信する仕組みは別に要ります。

必要になるのは、たとえば次の役目です。

  • 入力内容を受け取る処理
  • メール送信やデータ保存
  • 迷惑送信を減らす対策
  • 個人情報を安全に扱う設定
  • 障害が起きたときの記録

AIはこれらのプログラムも書けます。しかし、プログラムを動かす場所、受信先メール、ドメイン、運用確認までは自動的に完成しません。

今回追加したもの

レンタルサーバーのPHPで動かす、次の処理を追加しました。

  • フォーム内容の受け取りと入力文字数の確認
  • 不正なメールヘッダーの拒否
  • 別サイトからの送信と偽造送信を減らす確認
  • 自動投稿を見分ける隠し項目
  • 3秒未満の投稿と60秒以内の連続投稿の拒否
  • 氏名、メール、本文をエラーログへ残さない設計

ローカルではサイト15ファイルの型チェックがエラー0、14ページの本番ビルドが成功しました。XServer側のPHPは8.0.30で、配置先ディレクトリも存在することを確認しています。

ただし、これはまだ「コードが用意できた」という証拠です。「問い合わせが届く」という証拠ではありません。

2026年9月2日の実サーバー検証

XServerへ配置し、PHP 8.0.30で3ファイルの構文検査に合格しました。公開APIからテスト問い合わせを1通だけ送り、送信処理は成功を返しています。CSRFが不正な投稿は403、3秒未満の投稿は429で拒否されました。主要4ページもHTTP 200で表示できています。

初回メールは件名こそ正常でしたが、本文が ???? となり不合格でした。本文をUTF-8のBase64転送へ修正して再送したところ、Gmailへの到着と、お名前・メール・相談内容の日本語表示を画面で確認できました。

返信ボタンを押したときに入力者のアドレスが宛先になるReply-Toも確認しました。これで、今回決めた問い合わせ機能の合格条件を満たしました。

完成と呼ぶ前に確認すること

  1. 公開領域の外に受信先設定を置く
  2. サーバー上でPHPの構文を検査する
  3. テスト問い合わせを一通だけ送る
  4. 受信箱への到着とReply-Toを確認する
  5. 空欄、不正メール、連続投稿、失敗時の表示を確認する

受信先のメールアドレスはGitや記事には保存しません。実送信と公開は、確認を取ってから行います。

今回の判定

花屋サイトは、デザイン見本、送信プログラム、実受信まで確認できました。ただし実在店舗のサイトではないため、予約管理や個人情報の保存を含む本番運用まで検証した、という意味ではありません。

次回は無料公開とレンタルサーバーを同じ条件で比べます。料金だけでなく、問い合わせ、独自ドメイン、管理のしやすさまで確認します。

← 記事一覧へ