Собственно вот такая проблема. На почту приходит все в одну строку, а файлик не приходит. Где-то в коде ошибка, помогите пожалуйста. HTML: <form class="obratnuj-zvonok" autocomplete="off" action='/send.php' method='post'> <div class="form-zvonok"> <div> <input type='text' name='name' required placeholder="Имя"></div> <div> <input type='text' name='phone' required placeholder="Телефон"></div> <div> <input type='text' name='email' placeholder="email"> </div> <input type=file name=mail_file maxlength=64> <input class="bot-send-mail" type='submit' value='Послать заявку'> </div> </form> PHP: <?php $to = "sk@yandex.ru"; $tema = "заявка с систем охлаждения"; if ($_POST['name']!='') {$message .= "Имя: ".$_POST['name']."<br>";} if ($_POST['phone']!='') {$message .= "Телефон: ".$_POST['phone']."<br>";} if ($_POST['email']!='') {$message .= "Email: ".$_POST['email']."<br>";} if ($_POST['Message']!='') {$message .= "Сообщение: ".$_POST['Message']."<br>";} $picture = ""; // Если поле выбора вложения не пустое - закачиваем его на сервер if (!empty($_FILES['mail_file']['tmp_name'])) { // Закачиваем файл $path = $_FILES['mail_file']['name']; if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path; } $msg = $_POST['mail_msg']; if(empty($picture)) mail($to, $tema, $message); else send_mail($to, $tema, $message, $picture); function send_mail($to, $tema, $html, $path) { $fp = fopen($path,"r"); if (!$fp) { print "Файл $path не может быть прочитан"; exit(); } $file = fread($fp, filesize($path)); fclose($fp); $boundary = "--".md5(uniqid(time())); // генерируем разделитель $headers .= "MIME-Version: 1.0\n"; $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"; $multipart .= "--$boundary\n"; $kod = 'koi8-r'; // или $kod = 'windows-1251'; $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"; $multipart .= $message_part."--$boundary--\n"; if(!mail($to, $tema, $multipart, $headers)) { echo "К сожалению, письмо не отправлено"; exit(); } } ?>
тут про smtp и phpmailer --- Добавлено --- а тут только файл текстовый отправляет. --- Добавлено --- У меня код написан на отправку любого формата файла. Я не прошу вас кидать другие статьи, в которых все не то. Я вас прошу этот поправить, пожалуйста.
Это пофиг. Главное, там четко показан формат письма с вложением. Это раздел для наивных. Или поработайте сами, или идите во фриланс. В вашем коде бесплатно копаться никто не будет, уж извините. --- Добавлено --- Кстати, код – фигня! Одна кодировка текстовой части письма/исходника чего стоит! --- Добавлено --- И формат письма абсолютно не выдержан. --- Добавлено --- Кстати, пока не научитесь себя защищать от пользовательского ввода, лучше забудьте про использование HTML-формата. Тем более что для «нотификаций» этот формат объективно не нужен! --- Добавлено --- Уверены, что это значение пишется именно так? Про то, куда делось само quoted-printable-кодирование, уже не спрашиваю. С таким подходом к программированию далеко не уедешь.