見た目は完成。でも最初の問い合わせは届かなかった
花屋デモに安全な送信処理を追加し、実サーバーで受信まで検証しました。未送信と文字化けをどう直したか記録します。
「花と日々」の相談フォームには、名前、メールアドレス、ご相談内容を入力できます。空欄やメールアドレスの形式も確認します。
最初の版はここまでで、送信しても花屋には一通も届きませんでした。その後、レンタルサーバーで動く送信処理を追加し、実際の受信箱に届くところまで検証しました。
最初の版で届かなかった理由
ブラウザに表示されるフォームは、受付カウンターに置いた用紙のようなものです。書き終わった用紙を店員へ渡し、保管し、必要なら返信する仕組みは別に要ります。
必要になるのは、たとえば次の役目です。
- 入力内容を受け取る処理
- メール送信やデータ保存
- 迷惑送信を減らす対策
- 個人情報を安全に扱う設定
- 障害が起きたときの記録
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も確認しました。これで、今回決めた問い合わせ機能の合格条件を満たしました。
完成と呼ぶ前に確認すること
- 公開領域の外に受信先設定を置く
- サーバー上でPHPの構文を検査する
- テスト問い合わせを一通だけ送る
- 受信箱への到着とReply-Toを確認する
- 空欄、不正メール、連続投稿、失敗時の表示を確認する
受信先のメールアドレスはGitや記事には保存しません。実送信と公開は、確認を取ってから行います。
今回の判定
花屋サイトは、デザイン見本、送信プログラム、実受信まで確認できました。ただし実在店舗のサイトではないため、予約管理や個人情報の保存を含む本番運用まで検証した、という意味ではありません。
次回は無料公開とレンタルサーバーを同じ条件で比べます。料金だけでなく、問い合わせ、独自ドメイン、管理のしやすさまで確認します。