html フォーム メール 送信

HTML フォームメール送信:ウェブページから情報を収集し、メールを送信する

このチュートリアルでは、HTML を使用してフォームを作成し、サーバーサイドスクリプト (PHP など) と組み合わせて、フォームデータを送信する方法について詳しく説明します。 フォームの作成、データ処理、メール送信の手順をコード例とセキュリティに関する推奨事項とともに示します。

HTML フォームの基本

HTML フォームは、ユーザーがウェブページから情報を送信するために使用されます。 フォームを作成するには、次の HTML 要素を使用します。

フォームタグ

フォームを作成するには、<form> タグを使用し、action 属性でフォームデータを処理するサーバーサイドスクリプトのアドレスを指定し、method 属性でデータの送信方法 (GET または POST) を指定します。


<form action="process.php" method="post">
  <!-- フォームフィールド -->
</form>

フォームフィールド

フォームフィールドは、ユーザーが情報を入力する場所です。 フォームフィールドを作成するには、<input><textarea><select> などのタグを使用します。

  • <input> タグ: テキストフィールド、パスワードフィールド、ラジオボタン、チェックボックスなどのさまざまなタイプのフォームフィールドを作成するために使用されます。
  • <textarea> タグ: 複数行のテキストを入力するために使用されます。
  • <select> タグ: ドロップダウンリストを作成するために使用されます。

<label for="name">名前:</label>
<input type="text" id="name" name="name">

<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email">

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

フォームボタン

フォームボタンは、フォームを送信するために使用されます。 フォームボタンを作成するには、<button> または <input type="submit"> タグを使用します。


<button type="submit">送信</button>

PHP を使用したフォームデータの処理

フォームが送信されると、フォームデータはサーバーに送信され、サーバーサイドスクリプトで処理されます。 PHP を使用してフォームデータを処理するには、次の手順に従います。

フォームデータの受信

PHP のスーパーグローバル変数 $_GET または $_POST を使用して、送信されたフォームデータを受信できます。 使用する変数は、フォームの method 属性で指定した送信方法によって異なります。


<?php
// POST メソッドの場合
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

// GET メソッドの場合
$name = $_GET['name'];
$email = $_GET['email'];
$message = $_GET['message'];
?>

データの検証

受信したフォームデータは、有効性とセキュリティのために検証する必要があります。


<?php
// 空白チェック
if (empty($name) || empty($email) || empty($message)) {
  // エラー処理
}

// メールアドレスの形式チェック
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  // エラー処理
}
?>

データの処理

フォームデータが検証されたら、データベースへの保存、メール送信、その他の処理など、必要な処理を実行できます。

PHP を使用したメール送信

PHP の mail() 関数を使用して、メールを送信できます。 mail() 関数は、次のパラメーターを受け取ります。

  • $to: 受信者のメールアドレス。
  • $subject: メールの件名。
  • $message: メールの本文。
  • $headers: オプションのメールヘッダー。

<?php
// メールヘッダー
$headers = 'From: ' . $email . "\r\n" .
  'Reply-To: ' . $email . "\r\n" .
  'Content-type: text/html; charset=UTF-8' . "\r\n";

// メール送信
mail('[email protected]', 'ウェブサイトからのお問い合わせ', $message, $headers);
?>

セキュリティに関する注意事項

HTML フォームを扱うときは、セキュリティに注意することが重要です。

データの検証

ユーザーが入力したデータは、クロスサイトスクリプティング (XSS) や SQL インジェクションなどの攻撃を防ぐために、常に検証する必要があります。

メールアドレスの検証

ユーザーが送信したメールアドレスが有効かどうかを確認して、スパムメールの送信を防ぎます。

エラー処理

メール送信プロセス中のエラーを適切に処理し、ユーザーにわかりやすいメッセージを表示します。

まとめ

HTML フォームとサーバーサイドスクリプト (PHP など) を組み合わせることで、ウェブページからユーザー情報を簡単に収集し、メールで送信できます。 この機能を実装する際は、セキュリティの問題に注意し、ユーザーデータの安全を確保するために必要な対策を講じることが不可欠です。

関連情報

Q&A

Q1: フォームデータを送信する方法には、GET と POST のどちらを使用すればよいですか?

機密情報 (パスワードなど) を送信する場合は、POST メソッドを使用する必要があります。 GET メソッドは、機密情報を含まないデータを送信する場合に適しています。

Q2: フォームデータの検証には、どのような方法がありますか?

データの検証には、空白チェック、データ型のチェック、正規表現を使用したパターンマッチングなど、さまざまな方法があります。

Q3: メールが送信されない場合は、どうすればよいですか?

メールが送信されない場合は、メールサーバーの設定を確認するか、サーバー管理者に問い合わせてください。