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



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

#1 cap4369
cap4369
  • Неактивные
  • 62 сообщений
  • Репутация: 1
0

Обновлено 31 декабря 2013 - 13:06  Отправлено 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 = "[email protected]";
$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
  • Неактивные
  • 622 сообщений
  • Репутация: 93

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

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

#3 cap4369
cap4369
    Topic Starter
  • Неактивные
  • 62 сообщений
  • Репутация: 1

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

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



Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 22.5 3 темы, 6 сообщений, 1 балл репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 18 Вне конкурса за определение пользователя месяца

  • Фотография SergiuS85
    #3

    SergiuS85
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография kuztoday
    #4

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #5

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография mkreine
    #6

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография kolver
    #7

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Totti
    #8

    Totti
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография r0mZet
    #9

    r0mZet (rz-style.ru)
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография fedornabilkin
    #10

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

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