ユーザーが添付ファイルをアップロードして電子メールに送信できるようにする PHP フォームを作成しています。私はそれを作るためにかなり長い間探してきました。で、やっと見つけたこれ。http://www.shotdev.com/php/php-mail/php-send-email-upload-form-attachment-file/ . それは正常に動作します。しかし、自分で修正(フィールドを変更)すると、うまくいかないことがあります。
<?php
$location=$_POST['location'];
$name_ha=$_POST['name_ha'];
$name_person=$_POST['name_person'];
$email=$_POST['email'];
$date_sent=$_POST['date_sent'];
$date_completed=$_POST['date_completed'];
$date_received=$_POST['date_received'];
$to="admin@admin.com" . "$email";
$message="to";
//*** Uniqid Session ***//
$sid = md5(uniqid(time()));
$header = "";
$header .= "From: ".$_POST["name_ha"]."<".$_POST["email"].">\nReply-To: ".$_POST["email"]."";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$sid."\"\n\n";
$header .= "This is a multi-part message in MIME format.\n";
$header .= "--".$sid."\n";
$header .= "Content-type: text/html; charset=utf-8\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";
$header .= $message."\n\n";
//*** Attachment ***//
if($_FILES["fileAttach"]["name"] != "")
{
$FilesName = $_FILES["fileAttach"]["name"];
$Content = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"])));
$header .= "--".$sid."\n";
$header .= "Content-Type: application/octet-eam; name=\"".$FilesName."\"\n";
$header .= "Content-Transfer-Encoding: base64\n";
$header .= "Content-Disposition: attachment; filename=\"".$FilesName."\"\n\n";
$header .= $Content."\n\n";
}
$flgSend = @mail($to,"A new file for you!",null,$header); // @ = No Show Error //
if ($flgSend)
{
echo "Mail sent.";
}
?>
shotdev.com からダウンロードしたファイルと変更したファイルは、同じサーバーの同じフォルダーにホストされています。しかし、私が修正したものでは、ファイル サイズが 1 MB を超えると、添付ファイルがアップロードされる前に (アップロード プロセスの ~ 45%)、電子メールが送信されます。受信したメールには添付ファイルがなく、差出人 ($name_ha) の情報もありません。一方、shotdev.com でダウンロードしたファイルの場合、添付ファイルのサイズに関係なく、添付ファイルが完全にアップロードされた後にのみ電子メールが送信されます。
スクリプトのエラー、または何かが不足しているため、このようなことが発生していませんか? あなたの時間と助けに感謝します。