Отправить электронное письмо с помощью PHPMailer - вставить изображение в тело

97

Я пытаюсь отправить HTML-письмо с помощью PHPMailer с изображениями. Тело загружается из файла html, который содержит всю информацию.

При отправке почты изображение не появляется в теле, хотя я даже отправляю изображение еще и как вложение.

<img>Тег HTML указывает на то же место, что и место.

PHP:

$mail->AddAttachment('img/2u_cs_mini.jpg');

Как я могу сделать так, чтобы html указывал на вложение, чтобы изображение можно было загрузить в тело?

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

Элвиспт
источник

Ответы:

206

Я нашел ответ:

$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');

и на <img>метку поставитьsrc='cid:logo_2u'

Элвиспт
источник
3
Это прекрасно помогает !!! Из любопытства, где ты это нашел? Пожалуйста, объясни.
mtk
Почему обратная косая черта в конце cid?
Plummer
Я сделал это так давно, не помню, была ли вообще причина. Я не думаю, что есть. Скорее всего, фигня какая-то.
elvispt
8
Я считаю, что обратная косая черта была ошибочно оставлена ​​там из предыдущего кода, который избегал кавычек, например, echo "src=\"cid:logo_2u\""и я не считаю, что обратная косая черта необходима.
Жестокий
9
Для тех, кому нужно объяснение от неспециалиста: вам нужно сообщить механизму рендеринга, откуда брать изображение и с каким протоколом (чтобы использовать прикрепленное изображение, вы используете протокол de cid, Content-ID). И вы используете AddEmbeddedImage для присвоения идентификатора вложению, чтобы вы могли ссылаться на него (обратите внимание, что это могут быть звуки и другие типы файлов)
PhoneixS 02
3

Согласно руководству PHPMailer , полный ответ будет следующим:

$mail->AddEmbeddedImage(filename, cid, name);
//Example
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 

Пример использования:

$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!';

Если вы хотите отображать изображение с удаленным URL:

$mail->addStringAttachment(file_get_contents("url"), "filename");
Мари-Ева BB Волмар
источник