Я пытаюсь встроить встроенный файл изображения в электронное письмо с помощью phpmailer, но изображение не может быть встроено. В электронном письме повреждено изображение.
Вот код, который я использую:
if(isset($_FILES['file1']['name']) && $_FILES['file1']['error'] == 0)
{
$file_name = $_FILES['file1']['name'];
$file_type = $_FILES['file1']['type'];
$temp_file = $_FILES['file1']['tmp_name'];
$file_name = strtolower(basename($file_name));
$file_name = preg_replace("/\s+/", "-", $file_name);
$image_file_type = pathinfo($file_name, PATHINFO_EXTENSION);
$allowed_file_types = array("jpg", "jpeg", "png", "gif");
// Check if image file is a actual image or fake image
$check = getimagesize($temp_file);
if($check !== false)
{
// Allow certain file formats
if(in_array($image_file_type, $allowed_file_types))
{
// Open the file and read its content
$file_handle = fopen($temp_file, "rb");
$data = fread($file_handle, filesize($temp_file));
fclose($file_handle);
$attachment = base64_encode($data);
$mail->AddEmbeddedImage($attachment, "logo");
}
}
}
$mail->Body .= "<img src='cid:logo' alt='logo' />";
Соответствующий используемый HTML-код:
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data">
<label for="file1">Attach File:</label>
<input type="file" name="file1" id="file1" />
В электронном письме я получаю следующее сломанное изображение:
Где я делаю не так?
EDIT:
Мой вопрос совершенно другой. Это НЕ Дубликат Отправить письмо с PHPMailer - вставить изображение в тело
Я имею дело с динамически загружаемым файлом, а не со статическим файлом изображения.