@MalGym

Отправка формы на почту?

Привет. Делаю отправку формы на почту с вложением. Не могу понять какие заголовки надо передевать , чтобы приходил и текст и вложение. Сейчас если прикрепляю файл, он приходит, но не приходит текст, если не прикрепляю файл , текст приходит. Я так понимаю , что вопрос в этом заголовке , с вложение он будет такой Content-Type: multipart/mixed ( и текст не отображается ) , с текстом он такой Content-Type: text/plain. Возможно я что-то еще делаю не так
<?php
	
	$name = $_POST['name'];
	$email = $_POST['email'];
	$text = $_POST['text'];

			
	$name = htmlspecialchars(stripslashes($name));
	$email = htmlspecialchars(stripslashes($email));
	$text = htmlspecialchars(stripslashes($text));

  $to = "test-to@mail.ru";
  $from = "test-from@mail.ru";
  $subject = "Заполнена контактная форма на сайте ".$_SERVER['HTTP_REFERER'];
  $message = "Имя пользователя: ".$name."\nEmail ".$email."\nТелефон пользователя ".$text;
 
  $filesize = '';
  $headers = "Content-Type: text/plain; charset=utf-8\r\n"."From: Lux <support@lux.ru>\r\n"."Return-Path:<support@lux.ru>\r\n";

     if(is_uploaded_file($_FILES['file_v']['tmp_name'])) {
		 $bound="lux-".rand(1000,99999);
         $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_v']['tmp_name'])));
         $filename = $_FILES['file_v']['name'];
         $filetype = $_FILES['file_v']['type'];
         $filesize = $_FILES['file_v']['size'];
		 $headers = "Mime-Version: 1.0\n";
		 $headers.="Content-Type: multipart/mixed; boundary=\"$bound\"\n"."From: Lux <support@lux.ru>\r\n"."Return-Path:<support@lux.ru>\r\n";
		
		 $multipart = "--$bound"; 
		 $multipart .= "Content-Type: text/plain; charset=utf-8\r\n"; 
		 $multipart .= $message."\n"; 
		 
		 $message_part.="\n\n--$bound\n";
		 $message_part.="Content-Type: application/octet-stream; name=\"".$filename."\"\n";
		 $message_part.="Content-Transfer-Encoding:base64\n";
		 $message_part.="Content-Disposition: attachment; filename=\"".$filename."\"\n\n";
		 $message_part.=$attachment."\n";
		 
		 $multipart .= $message_part;
     }

  if ($filesize < 10000000) { 
    mail($to, $subject, $multipart, $headers);
    echo $_POST['name'].', Ваше сообщение отправлено, спасибо!';
  } else {
    echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';
  }
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы