Здравствуйте! С наступающим Новым годом!
Возникла проблема с отправкой письма с прикрепленным файлом. Скрипт работает при условии, если не прикреплять файл. Если же файл прикрепить, происходит закачка на сервер, но отправки не происходит. Помогите разобраться с проблемой.
Вот код, в нем обработчик и форма в одном файле.
<?php
class zakaz extends ACore {
protected function obr() {
if($_POST['save']) {
$name = $_POST['name'];
$mail = $_POST['mail'];
$text = $_POST['text'];
if(empty($name) || empty($mail) || empty($text)) {
exit("Не заполнены поля!");
}
//Отправкаписьма с вложением
$_POST['mail'] = htmlspecialchars(stripslashes($_POST['mail']));
$_POST['name'] = htmlspecialchars(stripslashes($_POST['name']));
$_POST['text'] = htmlspecialchars(stripslashes($_POST['text']));
$picture = "";
// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mp3']['tmp_name'])) {
// Закачиваем файл на сервер
$path = 'media/zakaz/'.$_FILES['mp3']['name'];
if (copy($_FILES['mp3']['tmp_name'], $path)) $picture = $path;
}
$thm = "Заказ разрешения на сайте";
$name = $_POST['name'];
$msg = $_POST['text'];
$mail = $_POST['mail'];
$body = 'Имя клиента: '.$name.'<br/>E-mail клиента: '.$mail.'<br/>Описание: '.$msg;
$mail_to = "admin@mail.ru";
$headers = "Content-type: text/html; charset = \"utf-8\"";
// Отправляем почтовое сообщение
if(empty($picture)) mail($mail_to, $thm, $body, $headers);
else {
if($picture){
$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 = '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";
$multipart .= $message_part."--$boundary--\n";
if(!mail($to, $thm, $multipart, $headers)) {
$_SESSION['res'] = "К сожалению, письмо не отправлено";
header("Location: ?option=zakaz");
exit();
}
}
}
//Добавление заявки в базу данных
$query = "INSERT INTO `zakaz` (`name`,`user_mail`,`description`)
VALUES ('$name','$mail','$text')";
if(!mysql_query($query)) {
exit(mysql_error());
}
else {
$_SESSION['res'] = "Ваша заявка сохранена, выберите систему оплаты";
header("Location:?option=zakaz");
exit;
}
}
}
//Вывод формы
public function get_center() {
session_start();
$price = 20;
$count = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
echo '
<div class="middle">
<div class="container_main">
<div class="content">
<h1>Заказать разрешение</h1>
<p><strong>Извините, заказ разрешения с данной страницы пока недоступен. Воспользуйтесь страницей контактов.</strong></p>
';
echo '
<script type="text/javascript">
function calc() {
var count = document.getElementById("count"); //получаем ссылку на элемент input (Кол-во)
var result = document.getElementById("result"); //получаем ссылку на элемент span, в него будем писать стоимость
var price = 20; //цена за единицу
price = parseInt(count.value) * price;
result.innerHTML = price;
}
</script>
<div class="form_mail">
<form enctype="multipart/form-data" action="" method="POST">
<table cellspacing="20">
<tr>
<td><span id="red_star">*</span> Имя:</td>
<td><span><input type="text" name="name" maxlength="20" size="25" value="" /></span></td>
</tr>
<tr>
<td><span id="red_star">*</span> Ваш Email:</td>
<td><span><input type="text" name="mail" maxlength="20" size="25" value="" /></span></td>
</tr>
<tr>
<td>
<span id="red_star">*</span> Описание:</td>
<td><span><textarea cols="45" rows="5" name="text"></textarea></span></td>
</tr>
<tr>
<td><span id="red_star">*</span> Выберите композицию:</td>
<td><span><input type="file" name="mp3" maxlength="20" size="25" value="" /></span></td>
</tr>
<tr>
<td>Цена за единицу:</td>
<td><div class="price"><strong>'.$price.'</strong> <span>грн</span></div></td>
</tr>
<tr>
<td><span id="red_star">*</span> Количество композиций:</td>
<td>
<div class="count"><select type="text" name="count" onchange="calc()" id="count"></div>';
foreach($count as $item) {
echo ('<option value="'.$item.'"'.$item.'">'.$item.'</option>');
}
echo '</select>
</td>
</tr>
<tr>
<td>Сумма к оплате:</td>
<td><div class="itog"><span id="result">0</span> грн</div></td>
</tr>
<tr>
<td colspan="2"><p class="form_zakaz_submit"><input type="submit" name="save" value="Отправить заявку"></p></td>
</tr>';
echo '<p><strong>'.$_SESSION['res'].'</strong></p>';
unset($_SESSION['res']);
echo
'</table>
</form>
</div><!-- #mailform -->
';
echo '
</div><!-- .content-->
</div><!-- .container_main-->';
}
}
?>