Я использую класс 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;
}
Если вы удалите тег изображения, это сработает?
Можете ли вы опубликовать свой код класса почтовой программы php
@SudharshanNair да, если я удалю теги img, он работает
@Chris в аккаунт Gmail
@HaiderAli проверьте код класса
Что содержит переменная body?
html-контент @HaiderAli
электронное письмо успешно получено в Outlook, похоже, проблема в учетной записи Gmail
Gmail может быть очень непостоянным, а иногда и чрезмерно рьяным в защите от спама. Вы пробовали просто изменить имена изображений, маршруты к ним или просто встраивать их? Что-то в вашем теле с тегами изображений задевает что-то на их стороне. Это может быть даже новый домен, в котором размещены изображения, это почти алхимия, пытаясь понять, как сделать их счастливыми.






если вы пытаетесь отправить его с локального хоста и прочитать в Gmail, это не сработает, потому что Gmail часто создает ссылки на прокси-изображения. вам необходимо отправить ссылки на изображения, которые ведут в доступное в Интернете место. Наверное, так. Если вы отправляете электронное письмо со ссылками на места, доступные в Интернете, приложите их к вопросу, и я также обновлю ответ.
EIDT: после чата с спрашивающим было определено, что в HTML-коде электронной почты отсутствует обычная разметка HTML: <html><body>ACTUALCONTENT</body></html>, после их добавления изображение отображается правильно.
Да, я отправляю с онлайн-сайта
пожалуйста, добавьте содержимое электронного письма, и давайте посмотрим, что с ним не так
<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>
"path-to-image" не является допустимым ресурсом изображения, пожалуйста, не заменяйте нерабочую часть. для нас очень важно сузить проблему.
<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>
в ссылке должен быть протокол. либо http://, https://, либо относящийся к протоколу //, хотя я не уверен, как ваш почтовый клиент обрабатывает их. так что самая безопасная ставка - https://, пожалуйста, добавьте его по ссылке, отправьте еще одно электронное письмо и проверьте еще раз. В противном случае это относительный путь
Позвольте нам продолжить обсуждение в чате.
Вы можете использовать метод AddEmbeddedImage, чтобы прикрепить изображение к своему телу. Итак, ваш код должен выглядеть так.
$mail->AddEmbeddedImage($_REQUEST['image_name'], 'ImageName');
А затем в своем $ body вы можете использовать это изображение
$body.= "<img src='cid:ImageName' />";
Иногда провайдеры электронной почты (например, Outlook) блокируют изображения в электронных письмах. Это может даже рассматриваться как спам. К какому провайдеру вы пытаетесь отправить?