名前と内容だけの簡単なメールフォームを作りました。
作成するページは3つ。

1.名前と本文をフォームに書き込み確認ボタンを押すページ(form.html)
2.名前と内容を確認して送信ボタンを押すページ(mailcheck.php)
3.メールを送信して送信完了をお知らせするページ(mailsend.php)

です。

-form.html-
<form action="mailcheck.php" method="POST"> <!--mailcheck.phpにPOSTメソッドで送信-->

      お名前:
      <br>
      <input type="text" name="username" size="30">
      <br>
      <br>
      本文:
      <br>
      <textarea name="message" cols="50" rows="5">
    こちらに本文をどうぞ。
    </textarea>
      <br>
      <br>
      <input type="submit" value="確認">

</form>
-mailcheck.php-
<?php
//エスケープ処理
$username = htmlspecialchars($_POST['username'], ENT_QUOTES); 
//$_POSTで受け取ったusernameをhtmlspecialchars関数で特殊文字を変換して変数$usernameに代入。
$message = htmlspecialchars($_POST['message'],ENT_QUOTES); 
//$_POSTで受け取ったmessageをhtmlspecialchars関数で特殊文字を変換して変数$messageに代入。
?>

■内容の確認をしてください。

<!--確認データ-->
<form action="mailsend.php" method="POST"> <!--POSTメソッドでmailsend.phpに送信。-->
<input type="hidden" name="username" value="<?php echo $username; ?>">
<input type="hidden" name="message" value="<?php echo $message; ?>">
<br>
<br>

お名前:

<?php
echo $username; //受け取ったusernameをページに表示
?>
<br>
<br>

本文:

<?php
echo nl2br($message); //nl2br()でmessageを改行して表示
?>
<br>
<br>
<input type="submit" value="メールの送信">
</form>
-mailsend.php-
<?php
//エスケープ
$username = htmlspecialchars($_POST['username'], ENT_QUOTES);
$message = htmlspecialchars($_POST['message'],ENT_QUOTES);
$message = $message."¥n[" . $username . "]"; //本文の後に改行してお名前をつける。
//¥マークは半角で。なぜかワードプレスだと半角の\が表記されない・・・。

mb_language('ja'); //日本語指定
mb_internal_encoding('UTF-8');//コード指定。今回はサイトがUTF-8だったのでUTF-8を指定。

$name = '自動送信';
$email = '<送信元アドレス>';
$header = 'Form: '. mb_encode_mimeheader($name) . '<' . $email .'>'; //別に空でも送れました。
$title = 'メールフォームからメールです。'; //メールタイトル指定。

$result = mb_send_mail("<自分のメールアドレス(宛先)>",$title,$message,$header);
//mb_send_mail(宛先メアド,件名,本文,ヘッダー情報)でメール送信。これを変数$resultへ代入。

if ($result){
	echo 'メールを送信しました。'; //trueの場合のコメント表示。
}else{
	echo '送れませんでした。フヒヒwwwwサーセンwwww'; //falseの場合のコメント表示。
}

?>
これで完成。 そこまで変数が入れ子になったりしているわけではないんで まぁなんとか理解できました。


コメントを残す

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)