PhpMailer не работает с HTML

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

Какие-либо предложения?

мой код до сих пор:

            $mail = new PHPMailer();
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'ssl';
            $mail->Host = "smtp.gmail.com";
            $mail->Port = 465;

            $mail->Username = "myusername";
            $mail->Password = "mypassword";


                $mail->setFrom($from);
                $mail->addAddress($to);

            $mail->Subject = $subject;
            $mail->Body =$body;
            $mail->IsHTML(true); 

            if ($mail->send()) {
                return 1;
            } else {

                return 0;
            }

Иногда провайдеры электронной почты (например, Outlook) блокируют изображения в электронных письмах. Это может даже рассматриваться как спам. К какому провайдеру вы пытаетесь отправить?

Chris 16.08.2018 15:00

Если вы удалите тег изображения, это сработает?

Sudharshan Nair 16.08.2018 15:01

Можете ли вы опубликовать свой код класса почтовой программы php

Haider Ali 16.08.2018 15:02

@SudharshanNair да, если я удалю теги img, он работает

Mhmd Backer Shehadi 16.08.2018 15:22

@Chris в аккаунт Gmail

Mhmd Backer Shehadi 16.08.2018 15:23

@HaiderAli проверьте код класса

Mhmd Backer Shehadi 16.08.2018 15:24

Что содержит переменная body?

Haider Ali 16.08.2018 15:26

html-контент @HaiderAli

Mhmd Backer Shehadi 16.08.2018 15:32

электронное письмо успешно получено в Outlook, похоже, проблема в учетной записи Gmail

Mhmd Backer Shehadi 16.08.2018 15:44

Gmail может быть очень непостоянным, а иногда и чрезмерно рьяным в защите от спама. Вы пробовали просто изменить имена изображений, маршруты к ним или просто встраивать их? Что-то в вашем теле с тегами изображений задевает что-то на их стороне. Это может быть даже новый домен, в котором размещены изображения, это почти алхимия, пытаясь понять, как сделать их счастливыми.

Tim Post 16.08.2018 15:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
240
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

если вы пытаетесь отправить его с локального хоста и прочитать в Gmail, это не сработает, потому что Gmail часто создает ссылки на прокси-изображения. вам необходимо отправить ссылки на изображения, которые ведут в доступное в Интернете место. Наверное, так. Если вы отправляете электронное письмо со ссылками на места, доступные в Интернете, приложите их к вопросу, и я также обновлю ответ.

EIDT: после чата с спрашивающим было определено, что в HTML-коде электронной почты отсутствует обычная разметка HTML: <html><body>ACTUALCONTENT</body></html>, после их добавления изображение отображается правильно.

Да, я отправляю с онлайн-сайта

Mhmd Backer Shehadi 16.08.2018 15:29

пожалуйста, добавьте содержимое электронного письма, и давайте посмотрим, что с ним не так

Jan Myszkier 16.08.2018 17:42

<br> <div class = "item clearfix"> <div class = "itemimg"> <img src = "path-to-image" /> </div> <div class = "itemtext"> <h3> title < / h3> <p> description </p> <p class = "price"> цена </p> <a class = "more-d" href = "link-to-page"> Подробнее ... </ а> </div> </div> <br>

Mhmd Backer Shehadi 17.08.2018 07:31

"path-to-image" не является допустимым ресурсом изображения, пожалуйста, не заменяйте нерабочую часть. для нас очень важно сузить проблему.

Jan Myszkier 17.08.2018 08:58

<br> <div class = "item clearfix"> <div class = "itemimg"> <img src = waveintlgt.com/uploads/download-1.jpg /> </div> <div class = "itemtext"> <h3> title </h3> <p> описание </p> <p class = "price"> цена </p> <a class = "more-d" href = "link-to-page"> Подробнее ... </a> </div> </div> <br>

Mhmd Backer Shehadi 17.08.2018 09:38

в ссылке должен быть протокол. либо http://, https://, либо относящийся к протоколу //, хотя я не уверен, как ваш почтовый клиент обрабатывает их. так что самая безопасная ставка - https://, пожалуйста, добавьте его по ссылке, отправьте еще одно электронное письмо и проверьте еще раз. В противном случае это относительный путь

Jan Myszkier 17.08.2018 10:43

Позвольте нам продолжить обсуждение в чате.

Jan Myszkier 17.08.2018 10:55

Вы можете использовать метод AddEmbeddedImage, чтобы прикрепить изображение к своему телу. Итак, ваш код должен выглядеть так.

$mail->AddEmbeddedImage($_REQUEST['image_name'], 'ImageName');

А затем в своем $ body вы можете использовать это изображение

$body.= "<img src='cid:ImageName' />";

Другие вопросы по теме