Есть форма,которая по мимо текстовых полей,ещё имеет и поля для загрузки файлов. Цель: всё это принять и отправить на почту. Есть: Код (Text): print_r($_FILES); $picture = ""; $picture2 = ""; $picture3 = ""; if (!empty($_FILES['fileBlog1']['tmp_name']) && !empty($_FILES['fileBlog2']['tmp_name']) && !empty($_FILES['fileBlog3']['tmp_name'])) { $path = $_FILES['fileBlog1']['name']; $path2 = $_FILES['fileBlog2']['name']; $path3 = $_FILES['fileBlog3']['name']; if (copy($_FILES['fileBlog1']['tmp_name'], $path)) { $picture = $path; } if (copy($_FILES['fileBlog2']['tmp_name'], $path2)) { $picture2 = $path2; } if (copy($_FILES['fileBlog3']['tmp_name'], $path3)) { $picture3 = $path3; } } $foto_size1 = $_FILES['fileBlog1']['size']; $foto_size2 = $_FILES['fileBlog2']['size']; $foto_size3 = $_FILES['fileBlog3']['size']; if ($foto_size1 > 5*1024*1000 && $foto_size2 > 5*1024*1000 && $foto_size3 > 5*1024*1000) { exit ("<p>Размер изображения превысил лимит в 5 Мб.</p> <a href='index.php'>вернуться к форме.</a>"); } else { if (!empty($_FILES['fileBlog1']['tmp_name'])) { $imageinfo1 = getimagesize($_FILES['fileBlog1']['tmp_name']); } if (!empty($_FILES['fileBlog2']['tmp_name'])) { $imageinfo2 = getimagesize($_FILES['fileBlog2']['tmp_name']); } if (!empty($_FILES['fileBlog3']['tmp_name'])) { $imageinfo3 = getimagesize($_FILES['fileBlog3']['tmp_name']); } if($imageinfo1['mime'] != 'image/gif' && $imageinfo1['mime'] != 'image/jpeg' && $imageinfo1['mime'] != 'image/jpg' && $imageinfo1['mime'] != 'image/png' && $imageinfo2['mime'] != 'image/gif' && $imageinfo2['mime'] != 'image/jpeg' && $imageinfo2['mime'] != 'image/jpg' && $imageinfo2['mime'] != 'image/png' && $imageinfo3['mime'] != 'image/gif' && $imageinfo3['mime'] != 'image/jpeg' && $imageinfo3['mime'] != 'image/jpg' && $imageinfo3['mime'] != 'image/png') { exit ("<p>Изображение должно быть в формате <strong>JPG,GIF или PNG</strong></p> <a href='index.php'>вернуться к форме.</a>"); } else { $thm = "Письмо с твоего сайта!Заявка на размещение новой темы блога."; $msg = "<p><font face=Verdana, Arial, Helvetica, sans-serif size=+1 color=#003366>Информация о клиенте:</font></p> <p><font face=Verdana, Arial, Helvetica, sans-serif size=-1 color=#333333> 1. Заголовок: <strong>$title</strong> 2. Автор: <strong>$autor</strong> 3. Основной текст: <strong>$text</strong>"; $mail_to = "panich07@list.ru"; // Отправляем почтовое сообщение if(empty($picture)) { mail($mail_to, $thm, $msg); } else { send_mail($mail_to, $thm, $msg, $picture, $picture2, $picture3); // Вспомогательная функция для отправки почтового сообщения с вложением function send_mail($to, $thm, $html, $path, $path2) { $fp = fopen($path,"r"); if (!$fp) { print "Файл $path не может быть прочитан"; exit(); } $file = fread($fp, filesize($path)); fclose($fp); $fp2 = fopen($path2,"r"); if (!$fp2) { print "Файл $path2 не может быть прочитан"; exit(); } $file2 = fread($fp2, filesize($path2)); fclose($fp2); $fp3 = fopen($path3,"r"); if (!$fp3) { print "Файл $path3 не может быть прочитан"; exit(); } $file3 = fread($fp3, filesize($path3)); fclose($fp3); $boundary = "--".md5(uniqid(time())); // генерируем разделитель $headers .= "MIME-Version: 1.0\n"; $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"; $multipart .= "--$boundary\n"; $kod = 'UTF-8'; $multipart .= "Content-Type: text/html; charset=$kod\n"; $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"; $multipart .= "$html\n\n"; $message_part = "--$boundary\n"; $message_part .= "Content-Type: application/octet-stream\n"; $message_part .= "Content-Transfer-Encoding: base64\n"; $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n"; $message_part .= chunk_split(base64_encode($file))."\n"; $message_part .= "--$boundary\n"; $message_part .= "Content-Type: application/octet-stream\n"; $message_part .= "Content-Transfer-Encoding: base64\n"; $message_part .= "Content-Disposition: attachment; filename = \"".$path2."\"\n\n"; $message_part .= chunk_split(base64_encode($file2))."\n"; $message_part .= "--$boundary\n"; $message_part .= "Content-Type: application/octet-stream\n"; $message_part .= "Content-Transfer-Encoding: base64\n"; $message_part .= "Content-Disposition: attachment; filename = \"".$path3."\"\n\n"; $message_part .= chunk_split(base64_encode($file3))."\n"; $multipart .= $message_part."--$boundary--\n"; if(!mail($to, $thm, $multipart, $headers)) { echo "К сожалению, письмо не отправлено"; exit(); } } } } } Всё это дело я обкатываю на Денвере. Так вот,когда открываю письмо в tmp,то вижу(про изображения и слова нет): Код (Text): <p><font face=Verdana, Arial, Helvetica, sans-serif size=+1 color=#003366>п≤п╫я└п╬я─п╪п╟я├п╦я▐ п╬ п╨п╩п╦п╣п╫я┌п╣:</font></p> <p><font face=Verdana, Arial, Helvetica, sans-serif size=-1 color=#333333> 1. п≈п╟пЁп╬п╩п╬п╡п╬п╨: <strong>привет</strong> 2. п░п╡я┌п╬я─: <strong>привет</strong> 3. п·я│п╫п╬п╡п╫п╬п╧ я┌п╣п╨я│я┌: <strong>привет</strong> А сам браузер при отправке выдаёт: Код (Text): Array ( [fileBlog1] => Array ( [name] => gal2.jpg [type] => image/jpeg [tmp_name] => Z:\tmp\phpBF.tmp [error] => 0 [size] => 4213 ) [fileBlog2] => Array ( [name] => gal3.jpg [type] => image/jpeg [tmp_name] => Z:\tmp\phpC0.tmp [error] => 0 [size] => 3308 ) [fileBlog3] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) ) Я,конечно,понимаю,что длинный код и нет желания копаться в нём, но помогите, пожалуйста, разобраться в причине... Заранее благодарен!
1. print_r($_FILES); - это то что выдает вам в браузер скрипт после отправки 2. нужную кодировку в заголовке письма отдайте и все
Так он даже без кодировки про файлы и слова не говорит! Сделал всё как Вы сказали: Код (Text): X-Sendmail-Cmdline: sendmail.pl -t -i <p><font face=Verdana, Arial, Helvetica, sans-serif size=-1 color=#333333> 1. Заголовок: <strong>123123</strong> 2. Автор: <strong>1231312</strong> 3. Основной текст: <strong>12313123123</strong> А где же картинки? П.С.В ссылке,что у Вас под ответом нет упоминаний про изображения.Только форма с обычными текстовыми полями,чекбоксами и т.д.
у тебя срабатывает вот это: Код (PHP): if(empty($picture)) { mail($mail_to, $thm, $msg); } вот и я думаю...где они тут... Обязательно добавлю, спасибо за мысль!
Так!Во всём разобрался и всё понял-спасибо,что навели на мысль... Только вот вопрос ещё-когда отправляется письмо с сайта,то она записывается на сервер и тут выплывает два развития событий: 1. Допустим я прочитал письмо и мне ничего не понравилось-как мне удалить их с сервака,что бы не загружать его? 2. Я прочитал письмо,откорректировал его и расположил у себя на сайте присланную информацию через форму в админке-получится у меня уже два изображения одинаковых.Как мне удалить первое-загруженное при отправке письма пользователем?