シンプルなメールフォームの作成 (PEAR::Mail利用) - PHP

シンプルなメールフォームをPHPで作成します。

コード

メールフォーム画面のコードです。メールの本文、Subject、送信者のメールアドレスを入力します。
mailform.php
<html>
<head>
</head>
<body>
  <form method="post" action="mailconfirm.php">
    お名前: <input type="text" name="textBox_Name" size=40 /><br/>
    メールアドレス: <input type="text" name="textBox_Address" size=40 /><br/>
    件名: <input type="text" name="textBox_Subject" size=60 /><br/>
    本文: <textarea cols=50 rows=10 name="textBox_MailBody"></textarea><br/>
    <input type="submit" name="button_Send" value="確認"/>
    <input type="reset" name="button_Send" value="クリア"/>
  </form>
</body>
</html>
送信メールの内容確認画面です。フォーム入力後[確認]ボタンをクリックするとこの画面が表示され、メールの送信内容を確認できます。[送信]ボタンをクリックするとメールを送信します。
mailconfirm.php
<html>
<head>
</head>
<body>
  <?php
    $button = $_POST['button_Send'];
    if ($button != ""){
      $sender_name = $_POST['textBox_Name']; 
      $mail_address = $_POST['textBox_Address']; 
      $mail_subject = $_POST['textBox_Subject']; 
      $mail_body = $_POST['textBox_MailBody']; 
    }
  ?>

  <form method="post" action="mailsend.php">
    <div>この内容でよろしいですか?</div>
    お名前: <?php echo $sender_name; ?><br/>
    メールアドレス: <?php echo $mail_address; ?><br/>
    件名: <?php echo $mail_subject; ?><br/>
    本文: <?php echo $mail_body; ?><br/>
    
    <?php
      echo "<input type=\"hidden\" name=\"H_Name\" value=\"$sender_name\">";
      echo "<input type=\"hidden\" name=\"H_Address\" value=\"$mail_address\">";
      echo "<input type=\"hidden\" name=\"H_Subject\" value=\"$mail_subject\">";
      echo "<input type=\"hidden\" name=\"H_Body\" value=\"$mail_body\">";
    ?>

    <input type="submit" name="button_SendMail" value="送信"/>
  </form>

</body>
</html>
メールを送信します。
mailsend.php
<html>
<head>
</head>
<body>
  <?php
    require_once("C:/php/PEAR/Mail.php");
    require_once("C:/php/PEAR/Mail/mime.php");

    $button = $_POST['button_SendMail'];
    if ($button != ""){
      $sender_name = $_POST['H_Name']; 
      $mail_address = $_POST['H_Address']; 
      $mail_subject = $_POST['H_Subject']; 
      $mail_body = $_POST['H_Body']; 

      $params = array(
        "host" => "post-central.ipentec.com",
        "port" => 25,
        "auth" => false
      );
      $mailObject = Mail::factory("smtp", $params);

      $recipients = "postman@ipentec.com";
      $fromstr = sprintf("%s <%s>", $sender_name, $mail_address);
      $header = array(
        "To" => "postman@ipentec.com",
        "From" => $fromstr,
        "Subject" => $mail_subject
      );

      $mailObject -> send($recipients, $header, $mail_body);
      echo '<div>メールを送信しました</div>';
    }
  ?>
  <a href="mailform.php">Back</a>
</body>
</html>

解説

mailform.php

mailform.phpは一般的なPOST型のWebフォームです。フォームのaction先を mailconfirm.phpにします。

mailconfirm.php

Submitボタンの取得をしフォームデータがPOSTされたかを判定します。フォームデータがPOSTされた場合はif文の内部を実行します。
 $button = $_POST['button_Send'];
  if ($button != ""){

POSTで送信されたテキストボックスの内容を変数に格納します。
 $sender_name = $_POST['textBox_Name']; 
 $mail_address = $_POST['textBox_Address']; 
 $mail_subject = $_POST['textBox_Subject']; 
 $mail_body = $_POST['textBox_MailBody'];

変数に格納したメールの本文や件名を画面に表示します。メールの内容の確認部分になります。
 お名前: <?php echo $sender_name; ?><br/>
 メールアドレス: <?php echo $mail_address; ?><br/>
 件名: <?php echo $mail_subject; ?><br/>
 本文: <?php echo $mail_body; ?><br/>

hiddenフィールドに変数の内容を格納します。変数の保持方法にはCookieを用いる方法や、セッション変数を用いる方法などがありますが今回はhiddenフィールドを用います。
 <?php
   echo "<input type=\"hidden\" name=\"H_Name\" value=\"$sender_name\">";
   echo "<input type=\"hidden\" name=\"H_Address\" value=\"$mail_address\">";
   echo "<input type=\"hidden\" name=\"H_Subject\" value=\"$mail_subject\">";
   echo "<input type=\"hidden\" name=\"H_Body\" value=\"$mail_body\">";
 ?>

mailsend.php

hiddenフィールドからPOSTされた値を読み取り変数に格納します。
以下、格納した変数を使いメールを送信します。メールの送信方法とコードの説明についてはこちらの記事を参照してください。
  $sender_name = $_POST['H_Name']; 
  $mail_address = $_POST['H_Address']; 
  $mail_subject = $_POST['H_Subject']; 
  $mail_body = $_POST['H_Body']; 

実行結果

mailform.php - メールフォーム画面


フォームに件名、メールアドレス、本文など入力します。入力後[確認]ボタンをクリックします。

confirm.php - メール確認画面

メールフォーム画面で確認ボタンを押すとメール確認画面に遷移します。フォーム画面で入力した内容が表示されますので内容を確認して[送信]ボタンをクリックします。

mailsend.php - メール送信画面

メール確認画面で送信ボタンを押すと、メールを送信し、メール送信画面を表示します。


著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-06
作成日: 2011-05-31
iPentec all rights reserverd.