Задать вопрос
ddimonn8080
@ddimonn8080

Как правильно отправить письмо с вложением и дополнительной информацией?

Здравствуйте.

Как правильно отправить письмо с вложением и дополнительной информацией?

Так не работает. Письмо без файла отправляется а с файлом приходит файл без инфы.

<?php
$sendto   = "mymail@gmail.com";
$username = $_POST['name'];
$userphone = $_POST['phone'];
$email = $_POST['email'];

$source = $_POST['source'];
$term = $_POST['term'];
$medium = $_POST['medium'];
$campaign = $_POST['campaign'];
$content = $_POST['content'];



if (!empty($_FILES['mail_file']['tmp_name'])) { 

    $path = $_FILES['mail_file']['name'];

    if (copy($_FILES['mail_file']['tmp_name'], $path)) $resume = $path; 

}


// Отправляем почтовое сообщение 

if(empty($resume)) {

	$headmail = "Name";

	$subject  = "Название: Новое сообщение";

	$headers  = "From: " . strip_tags($headmail) . "\r\n";
	$headers .= "Reply-To: ". strip_tags($headmail) . "\r\n";
	$headers .= "MIME-Version: 1.0\r\n";
	$headers .= "Content-Type: text/html;charset=utf-8 \r\n";

	$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
	$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Получить консультацию</h2>\r\n";
	$msg .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
	$msg .= "<p><strong>Номер телефона:</strong> ".$userphone."</p>\r\n";
	$msg .= "<p><strong>E-mail:</strong> ".$email."</p>\r\n";

	$msg .= "<p><strong>Источник:</strong> ".$source."</p>\r\n";
	$msg .= "<p><strong>Ключевое слово/фраза:</strong> ".$term."</p>\r\n";
	$msg .= "<p><strong>Канал кампании:</strong> ".$medium."</p>\r\n";
	$msg .= "<p><strong>Название кампании:</strong> ".$campaign."</p>\r\n";
	$msg .= "<p><strong>Дополнительная информация:</strong> ".$content."</p>\r\n";
	$msg .= "</body></html>";

	/*echo "<script language='Javascript'><!--
	function reload() {location = \"$backurl\"}; setTimeout('reload()', 20000);
	//--></script><center>$msg</center>";*/


	session_start();
	$ref = $_SERVER['HTTP_REFERER'];
	$_SESSION['ref'] = $ref;

	$find = '.php';

	$pos = strpos($ref, $find);

	if ($pos === false)
	{
		$backurl = 'thx-index.php';
	}
	else if ($pos !== false)
	{
		$parseUrl = parse_url($ref);

		$path = trim($parseUrl['path'], "/");

		$pathArr = explode('/', $path);

		$path = array_pop($pathArr);

		$backurl = 'thx-' . $path;
	}

	if(@mail($sendto, $subject, $msg, $headers)) {
	    echo "<script language='Javascript'><!--
	function reload() {location = \"$backurl\"}; reload();
	//--></script>";
	} else {
	    echo "<script language='Javascript'><!--
	function reload() {location = \"$backurl\"}; reload();
	//--></script>";
}

} else {

	$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 .= "<p><strong>От кого:</strong> ".$username."</p>\r\n";
	$multipart .= "<p><strong>Номер телефона:</strong> ".$userphone."</p>\r\n";
	$multipart .= "<p><strong>E-mail:</strong> ".$email."</p>\r\n";

	$multipart .= "<p><strong>Источник:</strong> ".$source."</p>\r\n";
	$multipart .= "<p><strong>Ключевое слово/фраза:</strong> ".$term."</p>\r\n";
	$multipart .= "<p><strong>Канал кампании:</strong> ".$medium."</p>\r\n";
	$multipart .= "<p><strong>Название кампании:</strong> ".$campaign."</p>\r\n";
	$multipart .= "<p><strong>Дополнительная информация:</strong> ".$content."</p>\r\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($sendto, $subject, $multipart, $headers)) { 

	  echo "К сожалению, письмо не отправлено"; 

	  exit(); 

	}

};


Спасибо
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
fornit1917
@fornit1917
Используйте swiftmailer
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы