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

Для того чтобы отправить изображение на почту в качестве вложения с помощью PHP, существует несколько шагов, которые нужно выполнить.

Первым делом, вам необходимо создать HTML-форму для загрузки изображения. В этой форме пользователь сможет выбрать изображение с помощью элемента input типа "file".

<form action="send_email.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image">
    <input type="submit" value="Отправить">
</form>

Затем, вам нужно создать файл "send_email.php", который будет обрабатывать загруженное изображение и отправлять его на почту.

<?php
// Получение информации о загруженном изображении
$uploadedFile = $_FILES['image']['tmp_name'];
$uploadedFileType = $_FILES['image']['type'];
$uploadedFileName = $_FILES['image']['name'];

// Определение email-адреса получателя и отправителя
$recipientEmail = '[email protected]';
$senderEmail = '[email protected]';

// Создание уникального имени файла
$fileName = time() . '_' . $uploadedFileName;

// Создание MIME-границы для разделения частей сообщения
$mimeBoundary = md5(time());

// Создание заголовков письма
$headers = "From: $senderEmailrn";
$headers .= "MIME-Version: 1.0rn";
$headers .= "Content-Type: multipart/mixed; boundary="$mimeBoundary"rn";

// Создание тела письма
$message = "--$mimeBoundaryrn";
$message .= "Content-Type: text/html; charset="UTF-8"rn";
$message .= "Content-Transfer-Encoding: 7bitrnrn";
$message .= "Ваше письмо с вложениемrnrn";
$message .= "--$mimeBoundaryrn";
$message .= "Content-Disposition: attachment; filename="$fileName"rn";
$message .= "Content-Transfer-Encoding: base64rn";
$message .= "Content-Type: $uploadedFileType; name="$fileName"rnrn";
$message .= chunk_split(base64_encode(file_get_contents($uploadedFile))) . "rn";
$message .= "--$mimeBoundary--";

// Отправка письма
$mailSent = mail($recipientEmail, 'Вложение на почту', $message, $headers);

// Проверка, было ли письмо успешно отправлено
if ($mailSent) {
    echo 'Ваше изображение было успешно отправлено на почту.';
} else {
    echo 'Ошибка отправки сообщения. Пожалуйста, попробуйте снова.';
}
?>

В этом коде мы сначала получаем информацию о загруженном изображении, а затем создаем уникальное имя файла, чтобы избежать конфликтов с уже существующими файлами. Затем мы создаем MIME-границу, которая будет разделять различные части сообщения.

Далее мы создаем заголовки письма, включая адрес отправителя, MIME-версию и тип содержимого.

Затем мы создаем тело письма, которое состоит из двух частей. Первая часть содержит текстовое сообщение, а вторая часть содержит вложение в виде изображения. Файл изображения первым делом считывается, а затем кодируется в base64, чтобы быть пригодным для передачи внутри текстового сообщения.

Наконец, мы отправляем письмо с помощью функции mail(). После отправки мы выводим сообщение об успешной отправке или об ошибке.

Важно отметить, что это пример базовой реализации отправки изображения на почту. В реальных проектах вы можете внести свои изменения и дополнения в код, чтобы соответствовать своим требованиям.