PHPでメールを送信する 誤りの指摘やご意見はこちらへ ご意見板
BBS

PHP Top
項目
PHPでフォームよりメールを送信する ↑項目に戻る
テキストボックスにコメントを入れてもらい、
メールを送信するプログラムを作成しましょう。

以下の内容を、「simple_mail.php」というファイル名で保存してください。

<html>
<head>
<title>PHP Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<font size="+1"><b>ご意見をメールしてください</b></font>
<br>
<?php
$admin_mail = "hoge@test.net";
if (isset($_POST['submit'])) { //データが送られてきた
$error_print = "";
//必要な情報が足りない場合
if ($_POST['contents'] == null)$error_print .= "内容が入力されていません<BR>";
if ($error_print != "") {
print $error_print;
print "<a href=\"simple_mail.php\">戻る</a>";
exit();
}
//IP取得
$IP = getenv("REMOTE_ADDR");
//日時取得
$datetime = date("Y-n-j H:i:s");
//挿入
$to=$admin_mail;
$subject="[PHP Dream test mail]$datetime";
$message=$_POST['contents']."\n$IP";
//メール送信
mb_send_mail($to,$subject,$message);
print "投稿を受け付けました。ありがとうございました。";
exit() ;
}
?>
ご意見を下のテキストボックスに記入し、「送信」してください。<br>
<br>
<form method="post" action="simple_mail.php">
ご意見<br>
<input type="text" name="contents" size="60" maxlength="255">
<br>
<input type="submit" name="submit" value="送信">
</form>
<br>
</body>
</html>

フォームメール ↑項目に戻る
「simple_mail.php」にブラウザからアクセスすると、以下のようなフォームが出てきます。


テキストボックスにメッセージを入れて、「送信」ボタンを押すと、所定のメールアドレス
(冒頭の$admin_mail)にメールが送信されるという、シンプルな内容です。


ポイント解説 ↑項目に戻る
//IP取得・・・1
$IP = getenv("REMOTE_ADDR");
//日時取得・・・2
$datetime = date("Y-n-j H:i:s");

このメール送信スクリプトでは、以下の2情報を取得して、メールに情報を追記しています。
1.IP取得 -> getenv関数によりフォーム記入者のIPアドレスを取得しています
2.日時取得 -> date関数によりフォーム記入時の日時を取得しています

こういった情報を取得しておくと、万が一後でトラブルなど発生した時に役に立ちます。
※通常、IPアドレスとアクセス日時が特定できれば、プロバイダなどに
問い合わせることで利用者を特定できます。



//挿入
$to=$admin_mail;
$subject="[PHP Dream test mail]$datetime";
$message="$i_contents\n$IP";
//メール送信
mb_send_mail($to,$subject,$message);

ここで、mb_send_mail関数により、メール送信を実現しています。
mb_send_mail関数は、PHP4.0.6以上で導入された、マルチバイト(日本語など)対応の
メール送信関数です。

※このスクリプト上では確認しておりませんが、mb_language関数で取得できる言語設定に
従ってメールを送信するので、日本語のメールがうまく送信できない場合は
mb_language関数の返り値が「Japanese」になっていることを確認してください。
「Japanese」の場合はISO-2022-JP/Base64でエンコードします。いわゆる「JIS」コードですね。


メールが送れるようになると、スクリプトの幅も大変広がると思います。
エンジョイしてください。

↑項目に戻る

PHP Top