1. 現在位置:
  2. トップページ
  3. HP作成tips
  4. PHP-メール送信フォーム
メール送信フォーム
PHP4、mb_send_mail の使えるサーバーで。
書き込みの記入もれ、エラー用のHTMLに飛びます。
メールアドレスのチェックでエラーの場合、メールアドレスエラー用のHTMLに飛びます。
エラー用ページ error.htmlとemailerror.html は別に作って下さい。
送信元アドレスに名前を付けました。
送信前に確認ページがあります。
半角カナ、特殊文字の処理。
HTML内のレイアウトや文面はご自由に

■ サンプル

「メール送信フォーム」こちら

■ ソース

mail-4.html  レイアウトはご自由に
<HTML>
<HEAD>
<TITLE>メール送信</TITLE>
<META Http-Equiv="Content-Type" Content="text/html;charset=x-euc-jp">
</HEAD>
<BODY bgcolor="#ffffff">
<CENTER>
<BR><BR><BR>
<TABLE BORDER="0" WIDTH="500">
<TR><TD ALIGN="left" VALIGN="top"><BR>
      <FONT size="3" color="#000000">mitti へのメールは,こちらからお願いします.</FONT>
      </TD></TR>
</TABLE>
<BR>
<FORM action="kakunin.php" method="post">
<TABLE BORDER="1" CELLPADDING="5" CELLSPACING="0" WIDTH="500">
<TR><TD ALIGN="center" BGCOLOR="#F7BDCE">メール送信フォーム<BR></TD></TR>
<TR><TD ALIGH="center">
      <TABLE WIDTH="480" BORDER="0">
      <TR><TD>E-mail</TD>
            <TD><input type="text" name="mail_address" size="50"></TD></TR>
      <TR><TD>名前</TD>
            <TD><input type="text" name="lastname" size="20"></TD></TR>
      <TR><TD>件名</TD>
            <TD><input type="text" size="50" name="subjectm"></TD></TR>
      <TR><TD>本文</TD>
            <TD><textarea name="text" cols="55" rows="10"></textarea></TD></TR>
      </TABLE>
</TD></TR>
<TR><TD ALIGN="center" BGCOLOR="#F7BDCE">
      <INPUT TYPE="submit" name="submit" VALUE=" 確認 ">
      </TD></TR>
</TABLE>
</FORM>
<BR>
</CENTER>
</BODY>
</HTML>


■ ソース

kakunin.php  内容チェック及び確認ページ
<?
/*
 *      メール送信
 *
 * Date : 2003.7.26
 * LastModify : 2003.7.26
 * http://park.millto.net/~mitti/
 * (C) copyright 2003 mitti. All rights reserved.
 *
 */

$submit = $HTTP_POST_VARS["submit"];
$mail_address = $HTTP_POST_VARS["mail_address"];
$lastname = $HTTP_POST_VARS["lastname"];
$subjectm = $HTTP_POST_VARS["subjectm"];
$text = $HTTP_POST_VARS["text"];

if($submit == " 確認 "){

//記入もれがあるかの確認をする
if ((! empty($HTTP_POST_VARS['mail_address'])) and (! empty($HTTP_POST_VARS['lastname'])) and (! empty($HTTP_POST_VARS['subjectm'])) and (! empty($HTTP_POST_VARS['text']))) {
}

else{
      header("Location: error.html");
      exit;
}

if (!eregi("^[_a-z0-9\-]+(\.[_a-z0-9\-]+)*@[a-z0-9\-]+(\.[a-z0-9\-]+)*$", $mail_address)) { 
      header("Location: emailerror.html");
}

}

// 申などの特殊な決まった文字の後ろに\マークが入らないようにする
$mail_address = stripslashes($mail_address);
$lastname = stripslashes($lastname);
$subjectm = stripslashes($subjectm);
$text = stripslashes($text);

//「半角カタカナ」を「全角カタカナ」に変換し、「全角」英数字を「半角」に変換します。
$mail_address = mb_convert_kana($mail_address, "KVr");
$lastname = mb_convert_kana($lastname, "KVKV");
$subjectm = mb_convert_kana($subjectm, "KVKV");
$text = mb_convert_kana($text, "KVKV");

// HTML表示用
$TEXT_HTML = $text;
$TEXT_HTML = preg_replace("/\r\n/","\n",$TEXT_HTML); //改行を<BR>に変える
$TEXT_HTML = preg_replace("/\r/","\n",$TEXT_HTML); //改行を<BR>に変える
$TEXT_HTML = preg_replace("/\n/","<BR>",$TEXT_HTML); //改行を<BR>に変える
$TEXT_HTML = preg_replace("/,/","%2C",$TEXT_HTML); //カンマがあった時の為の処理

?>

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE>送信確認</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF" link="#3333ff" vlink="#ff0033" alink="#ffff00">
<BR><BR>
<DIV ALIGN="center">
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="530" BORDER="0">
<TR ALIGN="center" VALIGN="top">
      <TD><B>送信確認</B></TD>
</TR>
<TR ALIGN="center" VALIGN="top">
      <TD><BR><FORM ACTION="mail-4.php" METHOD="POST">
      <TABLE WIDTH="450" BORDER="1" CELLSPACING="0" CELLPADDING="5">
      <TR><TD ALIGN="left">E-mail</TD><TD ALIGN="left"><? print $mail_address;?><INPUT TYPE="hidden" NAME="mail_address" VALUE="<? print $mail_address;?>"></TD></TR>
      <TR><TD ALIGN="left">名前</TD><TD ALIGN="left"><? print $lastname;?><INPUT TYPE="hidden" NAME="lastname" VALUE="<? print $lastname;?>"></TD></TR>
      <TR><TD ALIGN="left">件名</TD><TD ALIGN="left"><? print $subjectm;?><INPUT TYPE="hidden" NAME="subjectm" VALUE="<? print $subjectm;?>"></TD></TR>
      <TR><TD ALIGN="left">本文</TD><TD ALIGN="left"><? print $TEXT_HTML;?><INPUT TYPE="hidden" NAME="text" VALUE="<? print $text;?>"></TD></TR>
      </TABLE>
      </TD>
</TR>
</TABLE>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="450" BORDER="0">
<TR>
      <TD ALIGN="center" VALIGN="top">
      上記内容でよろしければ、「 送信 」ボタンを押して下さい。<BR>訂正がある場合はブラウザの戻るボタンで戻り、再度ご入力ください。<BR><BR>
      <INPUT TYPE="submit" name="submit1" VALUE=" 送信 ">
      </TD>
</TR>
</TABLE>
</FORM>
<BR><BR>
</DIV>
</BODY>
</HTML>


■ ソース

mail-4.php  メール送信
「自分のメールアドレス」の所にはご自分のメールアドレスを入れて下さい
送信者名の所に名前または送信者タイトルなど表示したい物を入れてください
<?
$submit = $HTTP_POST_VARS["submit"];
$mail_address = $HTTP_POST_VARS["mail_address"];
$lastname = $HTTP_POST_VARS["lastname"];
$subjectm = $HTTP_POST_VARS["subjectm"];
$text = $HTTP_POST_VARS["text"];

// 申などの特殊な決まった文字の後ろに\マークが入らないようにする
$mail_address = stripslashes($mail_address);
$lastname = stripslashes($lastname);
$subjectm = stripslashes($subjectm);
$text = stripslashes($text);

//「半角カタカナ」を「全角カタカナ」に変換し、「全角」英数字を「半角」に変換します。
$mail_address = mb_convert_kana($mail_address, "KVr");
$lastname = mb_convert_kana($lastname, "KVKV");
$subjectm = mb_convert_kana($subjectm, "KVKV");
$text = mb_convert_kana($text, "KVKV");

if($submit1 == " 送信 "){
}

mb_language("Ja") ;
mb_internal_encoding("EUC-JP") ;

$from ="From:" .mb_encode_mimeheader("送信者名") ."<自分のメールアドレス>";
$reply = "自分のメールアドレス";

// $reply = "メールアドレス1,メールアドレス2"; 2箇所に送信する場合

// メール送信(相手に控えを送付する場合はこちらも使う)
      $to= "$mail_address";
      $from = "$from";
      $subject = "メール送信内容控(送信者用)";
      $usermail = "メールフォームよりメールを送信しました\n\n";
      $usermail .= "E-mail:$mail_address\n\n";
      $usermail .= "名前:$lastname\n\n";
      $usermail .= "件名:$subjectm\n\n";
      $usermail .= "本文:$text\n\n";
      $usermail .= "--------------------------------------------------------------\n";
      $usermail .= "ホームページを作ろう\n"; // 削除可
      $usermail .= "http://park.millto.net/~mitti/\n"; // 削除可

      mb_send_mail($to,$subject,$usermail,$from);

// メール送信
      $to= "$reply";
      $from = "$mail_address";
      $subject = "メール内容";
      $mail = "メールフォームよりメールが来ました\n\n";
      $mail .= "E-mail:$mail_address\n\n";
      $mail .= "名前:$lastname\n\n";
      $mail .= "件名:$subjectm\n\n";
      $mail .= "本文:$text\n\n";
      $mail .= "--------------------------------------------------------------\n";
      $mail .= "ホームページを作ろう\n"; // 削除可
      $mail .= "http://park.millto.net/~mitti/\n"; // 削除可
      mb_send_mail($to,$subject,$mail,$from);

?>

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE>送信受付</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<BR><BR><BR>
<DIV ALIGN="center">
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="400" BORDER="0">
      <TR ALIGN="center" VALIGN="top">
      <TD><BR><BR><BR>
      メールを送信しました。<BR><BR>
      控えを送信しましたので、ご確認ください。
      </TD>
</TR>
</TABLE>
<BR><BR><BR>
</DIV>
</BODY>
</HTML>