Запретить блокировку изображений при отправке писем с использованием php

0

Я пробовал этот код. Но изображение не отображается в письме. Мне нужно отображать изображение без блокировки.

require("class.phpmailer.php")
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.sendgrid.net";
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'password';
$mail->From="[email protected]";
$mail->FromName="Email Image";
$mail->Sender="[email protected]";
$mail->AddReplyTo("[email protected]", "Reply");
$mail->AddAddress("[email protected]");
$mail->Subject = "Test";
$mail->IsHTML(true);
$mail->AddEmbeddedImage('https://ci4.googleusercontent.com/proxy/D7vQqu3U7j2qWYtvzCLHodLRvMHt1Fq0F5s12lEp2YQc-RPwytgpqhRLhqzIZglky59F4-A-OtVXlmglO2CoS7CrkZk=s0-d-e1-ft#http://litebreeze.com/images/profile_small.jpg',profile_pic,'profile_small.jpg', "base64", "application/octet-stream");
$mail->Body = "This is a test picture: <img src=\"cid:profile_pic\" /></p>";
$mail->AltBody="This is text only alternative body.";
if(!$mail->Send())
{
   echo "Error sending: " . $mail->ErrorInfo;
}
else
{
    echo "Letter is sent";
}
Теги:
phpmailer

1 ответ

0
Лучший ответ

Вы делаете несколько вещей здесь неправильно.

  • addEmbeddedImage ожидает, что вы предоставите локальный путь к файлу, а не удаленный URL.
  • Вы намеренно устанавливаете неправильный тип MIME
  • Вы не указали свой cid.
  • Я не вижу веских оснований для того, чтобы вытащить изображение из кеша прокси-сервера Google - просто потяните его прямо из источника.

Исправления для всех этих:

$mail->AddStringEmbeddedImage(file_get_contents('http://litebreeze.com/images/profile_small.jpg'),'profile_pic','profile_small.jpg');

Вы не используете шифрование - установите $mail->SMTPSecure = 'tls'; и $mail->Port = 587; ,

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

  • 0
    Спасибо за ответ. Встраивание изображения теперь работает нормально. Но изображения не отображаются в электронном письме по умолчанию. Изображения будут отображаться только после нажатия «Показать изображения». Есть ли способ заставить изображения отображаться по умолчанию, не спрашивая разрешения пользователей.
  • 0
    Нет, это под контролем пользователя. Вот почему он спрашивает. Вероятно, он покажет изображение, если пользователь добавит вас в свою адресную книгу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню