Flipsizze
@Flipsizze

Как сделать так чтобы на почту приходил не текст, а изображение как вложенное?

6492f1b4e5c41268463706.png
<meta http-equiv='refresh' content='3; url='>
<meta charset="UTF-8" />
<?php

	if (isset($_POST['name']) && $_POST['name'] != "")
		$name = $_POST['name'];
	else die ("Не заполнено поле \"Ваше Фамилия Имя Отчество\"");

	if (isset($_POST['email']) && $_POST['email'] != "") 
		$email = $_POST['email'];
	else die ("Не заполнено поле \"Ваш e-mail\"");

	if (isset($_POST['phone']) && $_POST['phone'] != "")
		$phone = $_POST['phone'];
	else die ("Не заполнено поле \"Ваш телефон\"");

	if (isset($_POST['age']) && $_POST['age'] != "") 
		$age = $_POST['age'];
	else die ("Не заполнено поле \"Ваш возраст\"");

	if (isset($_POST['procedure']) && $_POST['procedure'] != "")
		$procedure = $_POST['procedure'];
	else die ("Не заполнено поле \"Выберите процедуру\"");

	if (isset($_POST['file']) && $_POST['file'] != "")
		$file = $_POST['file'];
	else die ("Не заполнено поле \"Ваша фотография проблемной зоны\"");

	$subject = 'Анкета модели';
	$address = "ivashnev.nikita@mail.ru";
	$mes  = "Фамилия Имя Отчество: $name \n";
	$mes .= "E-mail: $email \n";
	$mes .= "Телефон: $phone \n";
	$mes .= "Возраст: $age \n";
	$mes .= "Процедура: $procedure \n";
	$mes .= "Фотография проблемной зоны: $file";
	$send = mail ($address, $subject, $mes, "Content-type:text/plain; charset = UTF-8\r\nFrom:$email");//собственно сам вызов функции отправки сообщения на сервере

	if ($send) //проверяем, отправилось ли сообщение
		echo "Сообщение отправлено успешно! ";
	else 
		echo "Ошибка, сообщение не отправлено! Возможно, проблемы на сервере";		 
?>
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 3
gogowq
@gogowq
Ozh domosh acha ozh
Важно enctype="multipart/form-data"
<form action="your_script.php" method="post" enctype="multipart/form-data">
  <input type="text" name="name" placeholder="Ваше Фамилия Имя Отчество" required>
  <input type="email" name="email" placeholder="Ваш e-mail" required>
  <input type="tel" name="phone" placeholder="Ваш телефон" required>
  <input type="number" name="age" placeholder="Ваш возраст" required>
  <select name="procedure" required>
    <option value="">Выберите процедуру</option>
    <option value="Procedure 1">Procedure 1</option>
    <option value="Procedure 2">Procedure 2</option>
    <option value="Procedure 3">Procedure 3</option>
  </select>
  <input type="file" name="file" id="file" required>
  <button type="submit">Отправить</button>
</form>


<?php
if (isset($_POST['name']) && $_POST['name'] != "") {
  $name = $_POST['name'];
} else {
  die("Не заполнено поле \"Ваше Фамилия Имя Отчество\"");
}

if (isset($_POST['email']) && $_POST['email'] != "") {
  $email = $_POST['email'];
} else {
  die("Не заполнено поле \"Ваш e-mail\"");
}

// Проверяем, был ли файл загружен
if (isset($_FILES['file']['tmp_name']) && $_FILES['file']['tmp_name'] != "") {
  // Получаем информацию о загруженном файле
  $file_name = $_FILES['file']['name'];
  $file_tmp = $_FILES['file']['tmp_name'];
  $file_type = $_FILES['file']['type'];
  $file_size = $_FILES['file']['size'];

  // Открываем файл и считываем его содержимое
  $file_content = file_get_contents($file_tmp);

  // Создаем границу для разделения различных частей письма
  $boundary = "--" . md5(uniqid(time()));

  // Создаем заголовок письма с указанием типа контента и границы
  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  $headers .= "From: $email\r\n";

  // Формируем тело письма
  $message = "--$boundary\r\n";
  $message .= "Content-Type: text/plain; charset=UTF-8\r\n";
  $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
  $message .= "Фамилия Имя Отчество: $name\r\n";
  $message .= "E-mail: $email\r\n";
  // Остальные поля формы
  $message .= "--$boundary\r\n";
  $message .= "Content-Type: $file_type\r\n";
  $message .= "Content-Transfer-Encoding: base64\r\n";
  $message .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";
  $message .= chunk_split(base64_encode($file_content));
  $message .= "--$boundary--";

  $subject = 'Анкета модели';
  $address = "ivashnev.nikita@mail.ru";
  $send = mail($address, $subject, $message, $headers);

  if ($send) {
    echo "Сообщение отправлено успешно!";
  } else {
    echo "Ошибка, сообщение не отправлено! Возможно, проблемы на сервере";
  }
} else {
  die("Не заполнено поле \"Ваша фотография проблемной зоны\"");
}
?>
Ответ написан
Комментировать
@historydev
Острая аллергия на анимешников
Письмо это html страница, попробуй так:
<img src="myUrl" />
Ответ написан
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
Так вы и вставляете просто путь до файла, а не картинку.
Причем путь должен быть полный, а не относительный. Т.е. например картинка берется с вашего сайта и ее путь относительно его корня assets/images/myimage.jpg, то в письме должен быть путь http://site.ru/assets/images/myimage.jpg
$mes .= 'Фотография проблемной зоны: <img src="'.$file.'">';


И замените заголовок:
// убрать Content-type:text/plain
Content-type:text/html
Ответ написан
Ваш ответ на вопрос

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

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