Я пробовал этот код. Но изображение не отображается в письме. Мне нужно отображать изображение без блокировки.
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";
}
Вы делаете несколько вещей здесь неправильно.
addEmbeddedImage
ожидает, что вы предоставите локальный путь к файлу, а не удаленный URL.Исправления для всех этих:
$mail->AddStringEmbeddedImage(file_get_contents('http://litebreeze.com/images/profile_small.jpg'),'profile_pic','profile_small.jpg');
Вы не используете шифрование - установите $mail->SMTPSecure = 'tls';
и $mail->Port = 587;
,
Вы также используете старую версию PHPMailer и основываете свой код на устаревшем примере. Пойдите, получите последнее.