[PHP-users 9834] Re: 添付メール送信に関して
Akinobu YAMAMOTO
php-users@php.gr.jp
Fri, 06 Sep 2002 14:01:21 +0900
どうも、山本です。
ご推奨いただいた「PHP実践のツボ」を購入し、その本を元に
メールフォームから添付ファイルをサーバにUploadしてから送信するように
カスタマイズしましたが、どうしてもSubjectが文字化けいたします。
とりあえずソースを公開いたしますので、ご指導・ご鞭撻のほど
お願いいたします。
Filename: attach_mail.php
----------------------------------------------------
<?php
$attach = "";
$input_url=getenv("HTTP_REFERER");
$boundary = "simple boundary";
print "<HTML>\n";
print "<BODY>\n";
if ($email == ""){
print "<TITLE>Input Error</TITLE>\n";
print "<CENTER><H1>Please input Mail Address.</H1>\n";
print "<p><hr>\n";
print "Push Back Button.<P>\n";
print "</CENTER></BODY>\n";
print "</HTML>\n";
exit;
}
//↑送信元E-mail未入力の場合はエラー処理を行う
if ($tomail == ""){
print "<TITLE>Input Error</TITLE>\n";
print "<CENTER><H1>Please input Mail Address.</H1>\n";
print "<p><hr>\n";
print "Push Back Button.<P>\n";
print "</CENTER></BODY>\n";
print "</HTML>\n";
exit;
}
//↑送信先E-mail未入力の場合はエラー処理を行う
if (!(ereg("([0-9A-Za-z._-])(@)([0-9A-Za-z._-])",$email))){
print "<TITLE>Input Error</TITLE>\n";
print "<CENTER><H1>Please input correct Mail address.</H1>\n";
print "<p><hr>\n";
print "Push Back Button.<P>\n";
print "</CENTER></BODY>\n";
print "</HTML>\n";
exit;
}
//↑不正な送信元E-mail入力の場合はエラー処理を行う
if (!(ereg("([0-9A-Za-z._-])(@)([0-9A-Za-z._-])",$tomail))){
print "<TITLE>Input Error</TITLE>\n";
print "<CENTER><H1>Please input correct Mail address.</H1>\n";
print "<p><hr>\n";
print "Push Back Button.<P>\n";
print "</CENTER></BODY>\n";
print "</HTML>\n";
exit;
}
//↑不正な送信先E-mail入力の場合はエラー処理を行う
if ($body == ""){
print "<TITLE>Input Error</TITLE>\n";
print "<CENTER><H1>Please input comment.</H1>\n";
print "<p><hr>\n";
print "Push Back Button.<P>\n";
print "</CENTER>\n";
exit;
}
//↑コメント未入力の場合はエラー処理を行う
$sub = stripcslashes($sub);
$sub = mb_encode_mimeheader($sub);
$body = stripcslashes($body);
$header = <<< EOD
Mime-Version: 1.0
Content-type: multipart/mixed; boundary="$boundary"
From: $email
EOD;
$msg = "This is a MIME encoded message.\n\n";
$msg = $msg . "--" . $boundary . "\n";
$msg = $msg . "Content-type: text/plain; charset=\"ISO-2022-JP\"\n";
$msg = $msg . "Content-Transfer-Encoding: 7bit\n\n";
$msg = $msg . $body . "\n\n";
if ($userfile_name != ""){
$n = mbstrrpos($userfile_name, "\\");
if($n){
$filename = mbsubstr($userfile_name, $n + 1);
}else{
$filename = $userfile_name;
}
if ($filename != ""){
$copyfile = "/home/hoge/data/upload/" . $filename;
copy($userfile,$copyfile);
$fp = fopen($copyfile,"r");
while(!feof($fp)){
$attach = $attach . fgetc($fp);
}
fclose($fp);
$attach = chunk_split(base64_encode($attach));
$msg = $msg . "--" . $boundary . "\n";
$msg = $meg . "Content-type: application/octet-stream; name=\"$filename\"\n";
$msg = $msg . "Content-Type: Content-Transfer-Encoding:Base64\n\n";
$msg = $msg . $attach . "\n\n";
unlink($copyfile);
}
}
//↑attachファイルが入力された場合に処理を行う。
$msg = $msg . "--" . $boundary . "\n";
mail($tomail,$sub,$msg,$header);
print "<TITLE>メール送信終了</TITLE>\n";
print "<P>\n";
print "<CENTER>\n";
print "<H3>メール送信を終了しました。</H3><P>\n";
print "<p><hr>\n";
print "<A HREF=\"$input_url\">[Back]</A>\n";
print "</CENTER></BODY></HTML>\n";
?>
----------------------------------------------------
------------------------------------------------
Akinobu YAMAMOTO
ayamamot@freeshop.co.jp
総合無料情報 FreeShop
http://www.freeshop.co.jp/
------------------------------------------------
本発言は特に明記がない限り、私山本の個人的なもので、
所属組織(freeshop.co.jp)には関係有りません。