PhpMailer не встраивает изображение в тело письма, а прикрепляет - PullRequest
0 голосов
/ 15 января 2019

Я отправляю электронную почту с помощью PHPmailer и привязываю для вставки изображения в тело письма (используя метод CID <img src="cid:qrcode" />), но оно всегда прикрепляет изображение вместо встраивания. Может кто-нибудь сказать мне, что не так с моим кодом (уже прокомментированы строки в коде) попробовал.).

Вот скриншот моего кода enter image description here

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Прежде всего, вы используете очень старую версию PHPMailer и основали свой код на очень старом примере. Получить последнюю версию .

Другая очевидная проблема заключается в том, что, когда вы помещаете HTML в Body, вы закомментировали вызов isHTML(), поэтому ваше сообщение отправляется в виде обычного текста, который не имеет понятия отображения изображений встроенным , Раскомментируйте эту строку:

$mail->isHTML();

Также имейте в виду, что в MIME практически нет различий между вложениями и встроенными изображениями - все является вложением, просто некоторые ссылки могут ссылаться на части HTML, и клиенты с поддержкой HTML могут использовать эту связь .

Если Outlook удаляет атрибуты src, это явно не проблема вашего кода отправки. Outlook делает очень неприятные вещи по электронной почте.

Еще одна небольшая вещь: вместо dirname(__FILE__) вы можете использовать __DIR__ в любой текущей версии PHP.

0 голосов
/ 03 февраля 2019

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

  1. Попытка сброса изображения в той же папке - Нет
  2. Попытка DIR переменная для динамического вытягивания изображения - Нет

Наконец, жестко закодированный путь к папке, в которой жил мой встроенный образ, ура

Магический форум для меня (с использованием PHPmailer v5.5) - заметьте, я использую Plesk, поэтому ваш точный путь может отличаться, используйте мой в качестве руководства ...

$ mail-> AddEmbeddedImage ("/ var / www / vhosts / {domainname} / httpdocs / {foldername) /image.jpg", "emailimg", "image.jpg");

Я отмечаю, что при вызове изображения как внедренного изображения мне пришлось использовать то же имя файла, что, как мне кажется, PHPmailer использует структуру:

источник встроенного имени-img, идентификатор ссылки, имя-внедренного имени во внутреннем вызове AddEmbeddedImage

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 15 января 2019

Попробуйте этот код, я думаю, он будет работать для вас

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

и на тег поставить src = 'cid: logo_2u'

...