@blog.justoneplanet.info

日々勉強

PHPでブラウザからメールを送る

■はじめに

  • 宜しければ質問や改善案などはコメントに書き込んでください
  • 自己責任でソースをご利用ください(攻撃者を想定してません)

■ファイル名:mail_input.php

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ご意見</title>
</head>
<body>
<form action="sendmail.php" method="post">
<input type="hidden" name="owner_address" value="(input your email address!)" />
<input type="hidden" name="title" value="testmail" />
<input type="hidden" name="redirectpath" value="<?php print($_SERVER['PHP_SELF']);?>" />
名前:<input type="text" name="name" />
Email:<input type="text" name="email" />
Text:<input type="text" name="msg" />
<input type="submit" value="send" />
</form>
</body>
</html>

■上記ファイルの解説

  • inputタグのaction属性でフォームの情報の送信先(情報を処理するファイル)を指定
  • 属性owner_addressでメールの送信先を隠しフォームとして記述。(必ず必要なわけではなく、むしろ公開時にスパムの温床となりかねない)
  • value=”testmail”でメールとして送信された場合の件名を隠しデーターとして保持
  • name=”redirectpath” value=”<?php print($_SERVER[‘PHP_SELF’]);?>”メール送信データ処理が(sendmail.php)終わった後のリダイレクト先を明示。(不要)

■ファイル名:sendmail.php

<?php
$header_info = "\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/" . phpversion();
$body = "「」「」" . $POST['title'] . "「」「」\n\n";
foreach($_POST as $key => $value){
	if(!strstr($key, "_")){
		$body .= "[". $key . "]" . $value . "\r\n";
	}
}
mb_send_mail(
	$_POST['owner_address'],
	$_POST['subject'],
	$body,
	$header_info
);
header("Location: " . $_POST['redirectpath']);
?>
<html>
<head>
</head>
<body>
</body>
</html>

■上記ファイルの解説

  • $header_infoに文字列としてメールヘッダーを代入
  • $bodyにフォームから送信されたtitleを代入している
  • その後$bodyに文字列として[送信されてきたformのname]とその値をペアで代入している。foreach($_POST as $key=>$value)でブラウザから送信されてきた(POST)データ(ハッシュ構造)をハッシュのキー($key)ごとに繰り返し処理をしている。$valueはキーに対応したデータである。たとえばowner_addressがキーで(input your email address!)がその中身といった具合かな。
  • ちなみに\r\nは(Windowsクライアント用)改行コードで、これがあると文字として出力した場合改行される(ただし<br />と同義として捉えてはいけない)
  • mb_send_mail(送信先,タイトル,本文[,追加ヘッダー][,追加パラメーター]);となる。追加ヘッダーにはX-Mailer:やCc:を\r\nで区切って指定する
  • header();はレスポンスヘッダーにLocation $_POST[‘redirectpath’]をセットし送信処理後の飛び先を指定している。

1件のコメント»

初心者のためのPHP(2)…「ブラウザからメールを送ろう!」…

■はじめに

* 宜しければ質問や改善案などはコメントに書き込んでください
* 自己責任でソースをご利用ください
* クレームは受け付け (more…)

RSS feed for comments on this post.TrackBack URL

Leave a comment