Перейти к содержимому

Реферальная программа Мегаплана


Отправка письма с прикрепленным файлом

#1 cap4369

cap4369
  • Пользователь
  • 62 сообщений
  • Репутация: 1
0

Отправлено 30 Декабрь 2013 - 21:59

Здравствуйте! С наступающим Новым годом!
Возникла проблема с отправкой письма с прикрепленным файлом. Скрипт работает при условии, если не прикреплять файл. Если же файл прикрепить, происходит закачка на сервер, но отправки не происходит. Помогите разобраться с проблемой.
Вот код, в нем обработчик и форма в одном файле.
<?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-->';
}
}
?>

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 30 Декабрь 2013 - 23:43

вот тут пример отправки почты с вложениями
  • 0

#3 cap4369

cap4369
    Topic Starter
  • Пользователь
  • 62 сообщений
  • Репутация: 1

Отправлено 31 Декабрь 2013 - 13:06

Я прочитал, отлично!, то что нужно, но есть вопросы, перейди по ссылке.
  • 0


Оформление форума – IPBSkins.ru