Я настоятельно рекомендую использовать такую библиотеку, как PHPMailer для отправки электронных писем.
Это проще и решает большинство вопросов автоматически для вас.
Что касается отображения встроенных (встроенных) изображений, вот что есть на их документации :
Встроенные вложения
Существует еще один способ добавить
крепление. Если вы хотите сделать HTML
электронная почта с изображениями, включенными в
стол, необходимо прикрепить
изображение, а затем привязать тег к нему. За
Например, если вы добавляете изображение как встроенное
Вложение с CID my-photo, вы
будет иметь доступ к нему в электронной почте HTML
с <img src="cid:my-photo"
alt="my-photo" />
.
Подробно, вот функция для добавления
встроенное вложение:
$mail->AddEmbeddedImage(filename, cid, name);
//By using this function with this example's value above, results in this code:
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg ');
Чтобы дать вам более полный пример того, как это будет работать:
<?php
require_once('../class.phpmailer.php');
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->Port = 25; // set the SMTP port
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddAddress('whoto@otherdomain.com', 'John Doe');
$mail->Subject = 'PHPMailer Test';
$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Your <b>HTML</b> with an embedded Image: <img src="cid:my-attach"> Here is an image!';
$mail->AddAttachment('something.zip'); // this is a regular attachment (Not inline)
$mail->Send();
echo "Message Sent OK<p></p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
?>
Edit:
Что касается вашего комментария, вы спросили, как отправить HTML по электронной почте со встроенными изображениями, поэтому я привел вам пример того, как это сделать.
Библиотека, о которой я вам рассказывал, может отправлять электронные письма, используя множество методов, отличных от SMTP.
Посмотрите на страницу PHPMailer Example для других примеров.
Так или иначе, если вы не хотите отправлять электронную почту способами, поддерживаемыми библиотекой, вы можете (должны) по-прежнему использовать библиотеку для создания сообщения, а затем отправляете его так, как хотите.
Например:
Вы можете заменить строку, которая отправляет электронное письмо:
$mail->Send();
С этим:
$mime_message = $mail->CreateBody(); //Retrieve the message content
echo $mime_message; // Echo it to the screen or send it using whatever method you want
Надеюсь, это поможет.
Дайте мне знать, если у вас возникнут проблемы с его использованием.