カテゴリ: PHP 更新日: 2026/01/08

PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介

PHP のメールフォームの作成(mail関数, PHPMailer)
PHP のメールフォームの作成(mail関数, PHPMailer)

先生と生徒の会話形式で理解しよう

生徒

「PHPでお問い合わせフォームを作って、入力された内容をメールで受け取りたいんですけど、どうすればいいですか?」

先生

「PHPにはメールを送るmail関数という機能が用意されていて、メールフォームを簡単に作ることができますよ。さらに、より高機能なPHPMailerというライブラリもあります。」

生徒

「難しそうだけど、初心者でも使えるんですか?」

先生

「もちろんです!今日は、mail関数を使った基本的なメールフォームの作り方と、PHPMailerを使ったより安全で確実な方法の両方を、丁寧に解説していきます。」

-

1. PHPでメールフォームを作る流れ

1. PHPでメールフォームを作る流れ
1. PHPでメールフォームを作る流れ

メールフォームとは、ユーザーがWebサイト上で名前やメールアドレス、お問い合わせ内容などを入力し、その情報をサーバーが受け取って指定のメールアドレスに送信する仕組みです。

PHPでは、以下のような流れでメールフォームを作ります:

  • HTMLで入力フォームを作る
  • PHPで送信処理をする
  • サーバーからメールを送信する

2. HTMLでメールフォームを作成する

2. HTMLでメールフォームを作成する
2. HTMLでメールフォームを作成する

まずは、ユーザーが入力するための画面(フォーム)をHTMLで作ります。


<form action="send.php" method="POST">
    <label>名前:</label>
    <input type="text" name="name" required><br>
    <label>メールアドレス:</label>
    <input type="email" name="email" required><br>
    <label>メッセージ:</label><br>
    <textarea name="message" rows="5" required></textarea><br>
    <button type="submit">送信する</button>
</form>

このフォームは、send.phpというPHPファイルにデータを送信します。

3. mail関数でメールを送信する

3. mail関数でメールを送信する
3. mail関数でメールを送信する

PHPのmail関数を使えば、簡単にメールを送ることができます。ただし、サーバーの設定によっては動かないこともあるので注意が必要です。


if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $to = "your@email.com";
    $subject = "お問い合わせがありました";
    $message = "名前: " . $_POST["name"] . "\n"
             . "メール: " . $_POST["email"] . "\n"
             . "メッセージ:\n" . $_POST["message"];
    $headers = "From: " . $_POST["email"];

    if (mail($to, $subject, $message, $headers)) {
        echo "メールを送信しました。";
    } else {
        echo "送信に失敗しました。";
    }
}

mail関数はシンプルですが、スパム対策や文字化けの問題が起きることもあるため、メール送信がうまくいかない場合は次のPHPMailerがおすすめです。

4. PHPMailerとは?

4. PHPMailerとは?
4. PHPMailerとは?

PHPMailerは、メール送信の機能を強化したPHPのライブラリです。GmailなどのSMTPサーバーを使って、安全にメールを送ることができます。

以下のような特徴があります:

  • Gmailと連携できる
  • HTML形式のメールが送れる
  • 添付ファイルも送信できる
  • 文字化けやエラーに強い
-

5. PHPMailerの導入と使い方

5. PHPMailerの導入と使い方
5. PHPMailerの導入と使い方

PHPMailerはComposerというツールで簡単にインストールできます。Composerが使えない場合は、ZIPファイルをダウンロードして使う方法もあります。

以下はGmailを使ったメール送信の例です。


use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);
try {
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'あなたのGmailアドレス';
    $mail->Password = 'アプリパスワード';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    $mail->setFrom($_POST["email"]);
    $mail->addAddress('送信先メールアドレス');
    $mail->Subject = 'お問い合わせ';
    $mail->Body = $_POST["message"];

    $mail->send();
    echo 'メールが送信されました';
} catch (Exception $e) {
    echo '送信に失敗しました: ', $mail->ErrorInfo;
}

Gmailを使うには、セキュリティの都合で「アプリパスワード」を発行する必要があります。これは通常のパスワードとは異なり、外部アプリからのログイン専用のコードです。

6. お問い合わせフォームの活用例

6. お問い合わせフォームの活用例
6. お問い合わせフォームの活用例
  • お問い合わせや相談を受け付ける窓口
  • 資料請求やセミナー申込フォーム
  • キャンペーン応募用フォーム

PHPで作るメールフォームは、個人ブログや企業サイトなど、さまざまな場面で使われています。最初は難しそうに感じるかもしれませんが、HTMLとPHPの基本を押さえれば、初心者でも作れるようになります。

まとめ

まとめ
まとめ

PHPでメールフォームを作成する方法は、一見すると難しそうに感じるかもしれませんが、基本的な流れを理解すれば、初心者でも十分に実装可能です。この記事では、まずmail関数を使った簡単なメール送信の仕組みから始め、次により高機能で信頼性のあるPHPMailerを使った方法までを紹介しました。 メールフォームは、Webサイトにとって非常に重要な役割を果たします。たとえば、ユーザーからのお問い合わせを受け付けたり、イベントへの申込みを管理したり、企業と顧客をつなぐ窓口として利用されることが多くあります。PHPのmail関数はサーバーが対応していればすぐに使える利点がありますが、環境によっては文字化けや迷惑メール扱いされることもあります。そのため、安定してメールを送信したい場合はPHPMailerを使うのが一般的です。 PHPMailerでは、Gmailや他のSMTPサーバーと連携でき、HTMLメールや添付ファイルにも対応しているため、ビジネス用途にも適しています。とくにGmailと連携する際には「アプリパスワード」の取得やSMTP設定の正確な記述が重要になるため、設定内容をしっかり確認しながら実装しましょう。

PHPのメールフォームを安全に構築するポイント

フォームを安全に運用するためには、以下のような対策もあわせて行うことをおすすめします:

  • 送信データのバリデーション(空欄チェック・メール形式チェック)
  • XSSやスパム送信を防ぐためのサニタイズ処理
  • reCAPTCHAやワンタイムトークンの導入で自動送信をブロック
  • フォームページと送信処理を分離し、セキュリティを向上

以下は、メールフォーム送信前にデータのバリデーションを行う基本例です。

    
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $name = trim($_POST["name"]);
    $email = filter_var($_POST["email"], FILTER_VALIDATE_EMAIL);
    $message = trim($_POST["message"]);

    if ($name && $email && $message) {
        // PHPMailerやmail関数で送信処理を行う
    } else {
        echo "入力内容に不備があります。すべての項目を正しく入力してください。";
    }
}
    
    

このような事前チェックを行うことで、無効なデータの送信を防ぐことができ、ユーザーにも安心感を与えることができます。特にお問い合わせフォームはサイトの信頼性にも関わる要素なので、安易に動作するだけではなく、ユーザー体験や安全性を意識した設計が求められます。 PHPの学習初期にメール送信の仕組みを理解しておくことは、今後の開発でも非常に役立ちます。小さなフォームでも「メールを確実に相手に届ける」仕組みを構築することが、Web制作の大切な第一歩です。

先生と生徒の振り返り会話

生徒

「PHPでメールフォームを作るのって、正直もっと難しいものだと思ってました。でも流れが分かると意外とシンプルですね。」

先生

「そうだね。フォームの作り方と、mail関数PHPMailerを選ぶところが分かれば、あとは組み立てるだけなんだ。」

生徒

「PHPMailerって最初は名前だけで難しそうって思ってたけど、Gmailで送信できるのはかなり便利ですね。HTMLメールにも対応してるし。」

先生

「うん、実務ではPHPMailerのようなライブラリを使う方が主流だよ。安定してるし、トラブルにも対応しやすい。フォームのバリデーションやセキュリティ対策も意識していこうね。」

生徒

「はい、次はreCAPTCHAの実装にも挑戦してみたいです。フォームってただ送るだけじゃなくて、ちゃんと守ることも大事なんですね。」

先生

「まさにその通り。Webの仕組みは便利な分、守りも重要になるんだ。今日の学びを活かして、どんどん実践していこう!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPでメールフォームを作るにはどんな準備が必要ですか?

PHPでメールフォームを作るには、HTMLでフォーム画面を用意し、PHPファイルでフォームデータを受け取り、mail関数PHPMailerを使ってメールを送信する準備が必要です。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.6
Java&Spring記事人気No6
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.7
Java&Spring記事人気No7
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.8
Java&Spring記事人気No8
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
-
-