使用php发送电子邮件时阻止图像阻止

时间:2015-01-30 12:05:42

标签: php phpmailer

我试过这段代码。但图像未显示在电子邮件中。我需要显示图像而不会被阻止。

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="ex@gmail.com";
$mail->FromName="Email Image";
$mail->Sender="eg@gmail.com";
$mail->AddReplyTo("xe@gmail.com", "Reply");
$mail->AddAddress("exe@gmail.com");
$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";
}

1 个答案:

答案 0 :(得分:0)

你在这里做了几件事。

  • addEmbeddedImage希望您提供文件的本地路径,而不是 远程网址。
  • 您故意设置错误的MIME类型
  • 你没有引用你的cid。
  • 我认为没有理由从谷歌的代理缓存中提取图片 - 只需直接从源代码中提取图片。

修复所有这些:

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

您没有使用加密 - 设置$mail->SMTPSecure = 'tls';$mail->Port = 587;

您还使用旧版本的PHPMailer,并将您的代码基于一个过时的示例。转到get the latest