1. 現在位置:
  2. トップページ
  3. HP作成tips
  4. PHP-メール送信フォームmild使用+α
メール送信フォームmild使用+α
PHP4、mb_send_mail の使えるサーバーで。
画面を移動しないでエラーを表示。
送信前に確認ページがあります。
HTML内のレイアウトや文面はご自由に

■ サンプル

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

■ 入力ページのソース

mail.php  レイアウトはご自由に
<?php
/*
 *    メール送信フォーム
 *
 * Date : 2008.1.29
 * LastModify : 2008.1.29
 * (C) copyright 2008 mitti. All rights reserved.
 *
 */

$mail_address = $HTTP_POST_VARS["mail_address"];
$lastname = $HTTP_POST_VARS["lastname"];
$subjectm = $HTTP_POST_VARS["subjectm"];
$comment = $HTTP_POST_VARS["comment"];
$sex = $HTTP_POST_VARS["sex"];
$area = $HTTP_POST_VARS["area"];

// 申などの特殊な決まった文字の後ろに\マークが入らないようにする
$lastname = stripslashes($lastname);
$subjectm = stripslashes($subjectm);
$text = stripslashes($text);
// HTML表示用
$TEXT_HTML = $comment;
$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); //カンマがあった時の為の処理
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<META Http-Equiv="Content-Type" Content="text/html;charset=EUC-JP">
<META http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="mailform.css">
<title>メール送信</title>
</head>
<body>
<div id="containar">
<!-- 
<table border="0" cellpadding="0" cellspacing="0" width="500">
<tr><td align="left" valign="top"><br>
    <div STYLE="line-height:120%"><font size="3" color="#000000">実際にはメールは送信されません。<br></font></div></td></tr>
</table>
 -->
<br>
<FORM action="kakunin.php" method="post">
<table id="table2">
<tr><td class="td1">メール送信フォーム</td></tr>
<tr><td class="td2">
    <table id="table1">
    <tr><td class="td3">E-mail</td>
        <td class="td3"><? echo($err) ?><input type="text" name="mail_address" size="50" value="<? print $mail_address;?>"></td></tr>
    <tr><td class="td3">名前</td>
        <td class="td3"><? echo($err1) ?><input type="text" name="lastname" size="20" value="<? print $lastname;?>"></td></tr>
    <tr><td class="td3">件名</td>
        <td class="td3"><? echo($err2) ?><input type="text" size="50" name="subjectm" value="<? print $subjectm;?>"></td></tr>
    <tr><td class="td3">本文</td>
        <td class="td3"><? echo($err3) ?><textarea name="comment" cols="48" rows="10"><? print $comment;?></textarea></td></tr>
    <tr><td class="td3">性別</td>
        <td class="td3"><? echo($err4) ?>
            <input type="radio" name="sex" value="男" <? if($sex == '男'){print checked;} ?>>男
            <input type="radio" name="sex" value="女" <? if($sex == '女'){print checked;} ?>>女
        </td></tr>
    <tr><td class="td3">住所</td>
        <td class="td3"><? echo($err5) ?>
        <SELECT NAME="area">
        <OPTION VALUE="">下記より選択</OPTION>
        <OPTION VALUE="北海道" <? if($area == '北海道'){print selected;} ?>>北海道</OPTION>
        <OPTION VALUE="本州" <? if($area == '本州'){print selected;} ?>>本州</OPTION>
        <OPTION VALUE="四国" <? if($area == '四国'){print selected;} ?>>四国</OPTION>
        <OPTION VALUE="九州・沖縄" <? if($area == '九州・沖縄'){print selected;} ?>>九州・沖縄</OPTION>
        </SELECT> 
    </td></tr>
    </table>
</td></tr>
<tr><td class="td1">
    <INPUT TYPE="submit" name="submit" VALUE=" 確認 ">
    </td></tr>
</table>
</FORM>
<br>
</div>
</body>
</html>

■ 確認用ソース

kakunin.php  内容チェック及び確認ページ
<?php
/*
 *    確認
 *
 * Date : 2008.1.29
 * LastModify : 2008.1.29
 * (C) copyright 2008 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"];
$comment = $HTTP_POST_VARS["comment"];
$sex = $HTTP_POST_VARS["sex"];
$area = $HTTP_POST_VARS["area"];

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

// エラーチェック
$item = array("mail_address","lastname","subjectm","comment","sex","area");
    $err = "";
    $err1 = "";
    $err2 = "";
    $err3 = "";
    $err4 = "";
    $err5 = "";
    if ( $$item[0] ) { $reg_mail_address= $$item[0]; } else { $err .= "<font color=\"#ff0000\">E-mailアドレスが未記入です</font><br>\n"; }
    if (!eregi("^[_a-z0-9\-]+(\.[_a-z0-9\-]+)*@[a-z0-9\-]+(\.[a-z0-9\-]+)*$", $mail_address)) { $err .= "<font color=\"#ff0000\">E-mailアドレスが正しくありません</font><br>\n"; }
    if ( $$item[1] ) { $reg_lastname= $$item[1]; } else { $err1 .= "<font color=\"#ff0000\">名前が未記入です</font><br>\n"; }
    if ( $$item[2] ) { $reg_subjectm= $$item[2]; } else { $err2 .= "<font color=\"#ff0000\">件名が未記入です</font><br>\n"; }
    if ( $$item[3] ) { $reg_comment= $$item[3]; } else { $err3 .= "<font color=\"#ff0000\">本文が未記入です</font><br>\n"; }
    if ( $$item[4] ) { $reg_sex= $$item[4]; } else { $err4 .= "<font color=\"#ff0000\">性別が未チェックです</font><br>\n"; }
    if ( $$item[5] ) { $reg_area= $$item[5]; } else { $err5 .= "<font color=\"#ff0000\">住所が未選択です</font><br>\n"; }

    // $errに文字列がある場合はエラーページを表示
    if ( $err || $err1 || $err2 || $err3 || $err4 || $err5 ) { include("mail.php"); exit;}
}
// 申などの特殊な決まった文字の後ろに\マークが入らないようにする
$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 = $comment;
$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); //カンマがあった時の為の処理

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<META Http-Equiv="Content-Type" Content="text/html;charset=EUC-JP">
<META http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="mailform.css">
<TITLE>送信確認</TITLE>
</HEAD>
<BODY>
<div id="containar">
<FORM ACTION="mail-4.php" METHOD="POST">
<table id="table2">
<tr><td class="td1" colspan="2">送信確認</td></tr>
<tr><td class="td2">E-mail</td>
    <td class="td2"><? print $mail_address;?><INPUT TYPE="hidden" NAME="mail_address" VALUE="<? print $mail_address;?>"></td></tr>
<tr><td class="td2">名前</td>
    <td class="td2"><? print $lastname;?><INPUT TYPE="hidden" NAME="lastname" VALUE="<? print $lastname;?>"></td></tr>
<tr><td class="td2">件名</td>
    <td class="td2"><? print $subjectm;?><INPUT TYPE="hidden" NAME="subjectm" VALUE="<? print $subjectm;?>"></td></tr>
<tr><td class="td2">本文</td>
    <td class="td2"><? print $TEXT_HTML;?><INPUT TYPE="hidden" NAME="comment" VALUE="<? print $comment;?>"></td></tr>
<tr><td class="td2">性別</td>
    <td class="td2"><? print $sex;?><INPUT TYPE="hidden" NAME="sex" VALUE="<? print $sex;?>"></td></tr>
<tr><td class="td2">住所</td>
    <td class="td2"><? print $area;?><INPUT TYPE="hidden" NAME="area" VALUE="<? print $area;?>"></td></tr>
</table>
<BR>
<table id="table1">
<tr><td class="td4">
    上記内容でよろしければ、「 送信 」ボタンを押して下さい。<BR>訂正がある場合は「BACK」ボタンで戻り、再度ご入力ください。<BR><BR>
    <INPUT TYPE="submit" name="submit1" VALUE=" 送信 "><br><br>
    <FORM><INPUT TYPE="button" VALUE="BACK" onClick="history.back()"></FORM>

</td>
</tr>
</table>
</FORM>
<BR><BR>
</DIV>
</BODY>
</HTML>

■ 送信用ソース

mail-4.php  メール送信
「mitti@mild.sumomo.ne.jp」の所にはご自分のメールアドレスに変更して下さい
「MILD みっち」の所には名前または送信者タイトルなど表示したい物に変更して下さい
<?php
/*
 *    メール送信
 *
 * Date : 2008.1.29
 * LastModify : 2008.1.29
 * http://mild.sumomo.ne.jp/index.php
 * (C) copyright 2008 mitti. All rights reserved.
 *
 */

$mail_address = $HTTP_POST_VARS["mail_address"];
$lastname = $HTTP_POST_VARS["lastname"];
$subjectm = $HTTP_POST_VARS["subjectm"];
$comment = $HTTP_POST_VARS["comment"];
$sex = $HTTP_POST_VARS["sex"];
$area = $HTTP_POST_VARS["area"];

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

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

// HTML表示用
$TEXT_HTML = $comment;
$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); //カンマがあった時の為の処理

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

$from ="From:" .mb_encode_mimeheader("MILD みっち") ."<mitti@mild.sumomo.ne.jp>";
$reply = "mitti@mild.sumomo.ne.jp";

// $reply = "mitti@mild.sumomo.ne.jp,m-o@din.or.jp"; 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 .= "本文:\n";
//    $usermail .= "$comment\n\n";
//    $usermail .= "性別:$sex\n\n";
//    $usermail .= "住所:$area\n\n";
//    $usermail .= "--------------------------------------------------------------\n";
//    $usermail .= "MILD-mitti\n";
//    $usermail .= "http://mild.sumomo.ne.jp/index.php\n";
//    mb_send_mail($to,$subject,$usermail,$from);

    // メール送信
    $to= "$reply";
    $from = "$from";
    $subject = "メールフォームより";
    $mail_a = "メールフォームよりメールが来ました\n\n";
    $mail_a .= "E-mail:$mail_address\n\n";
    $mail_a .= "名前:$lastname\n\n";
    $mail_a .= "件名:$subjectm\n\n";
    $mail_a .= "本文:\n";
    $mail_a .= "$comment\n\n";
    $mail_a .= "性別:$sex\n\n";
    $mail_a .= "住所:$area\n\n";
    mb_send_mail($to,$subject,$mail_a,$from);
?>
<!-- ここまで送信処理のPHPプログラム //-->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<META Http-Equiv="Content-Type" Content="text/html;charset=EUC-JP">
<META http-equiv="Content-Style-Type" content="text/css">
<link rel="stylesheet" type="text/css" href="mailform.css">
<TITLE>送信</TITLE>
</HEAD>
<BODY>
<div id="containar">
<table id="table2">
<tr><td class="td1" colspan="2">下記内容を送信しました</td></tr>
<tr><td class="td2">E-mail</td>
    <td class="td2"><? print $mail_address;?></td></tr>
<tr><td class="td2">名前</td>
    <td class="td2"><? print $lastname;?></td></tr>
<tr><td class="td2">件名</td>
    <td class="td2"><? print $subjectm;?></td></tr>
<tr><td class="td2">本文</td>
    <td class="td2"><? print $TEXT_HTML;?></td></tr>
<tr><td class="td2">性別</td>
    <td class="td2"><? print $sex;?></td></tr>
<tr><td class="td2">住所</td>
    <td class="td2"><? print $area;?></td></tr>
</table>
<BR><BR>
<FORM><input type="button" name="OK" value="閉じる" onClick="window.close()"></FORM>
</DIV>
</BODY>
</HTML>

■ スタイルシート

mailform.css
@charset "shift_jis";

body {
    background-color: #ffffff;
    font-size: 12px;
    text-align: center;
}
#containar {
    width: 500px;
    margin-top: 70px;
    margin-bottom: 70px;
    margin-left: auto;
    margin-right: auto;
    border: none;
}
#table2 {
    width: 500px;
    margin-top: 0px;
    margin-bottom: 0px;
    margin-left: auto;
    margin-right: auto;
    border: 1px #aaaaaa solid;
    border-collapse: collapse;
}
.td1 {
    width: 500px;
    text-align: center;
    border: 1px #aaaaaa solid;
    padding: 10px 5px 10px 5px;
    margin: 0px 0px 0px 0px;
    background-color: #F7BDCE;
    font-size:12px;
}
.td2 {
    width: 500px;
    text-align: reft;
    border: 1px #aaaaaa solid;
    padding: 10px 5px 10px 5px;
    margin: 0px 0px 0px 0px;
    background-color: #ffffff;
    font-size:12px;
}
#table1 {
    width: 480px;
    padding: 0px 0px 0px 0px;
    margin: 0px 0px 0px 0px;
    background-color: #ffffff;
    border: none;
}
.td3 {
    width: 480px;
    text-align: reft;
    border: none;
    padding: 10px 5px 10px 5px;
    margin: 0px 0px 0px 0px;
    background-color: #ffffff;
    font-size:12px;
}
.td4 {
    width: 480px;
    text-align: center;
    border: none;
    padding: 10px 5px 10px 5px;
    margin: 0px 0px 0px 0px;
    background-color: #ffffff;
    font-size:12px;
}