PHP mail() - 图像并不总是加载

时间:2015-05-13 08:55:44

标签: php html

我有一个PHP邮件脚本,基本上如下:

$result = mail($to, $subject, $message, $headers);
if(!$result) {   
  echo "Error";   
} else {
  echo "Success";
}

$message是一封HTML电子邮件,主要在我的电子邮件客户端呈现,但图片似乎只是零星加载。

图像都是这样的:

<img src='http://www.mywebsite.com/media/twitter.png' />

我不明白为什么有人会加载而有些人不会,当它们都以相同的方式设置时。

我已经读过将图像作为附件嵌入到电子邮件中会更好,但我不确定如何执行此操作。您似乎添加了这样一行:

<img src='cid:123456789'>

但是这个参考是什么?我如何编码这样的图像?

任何帮助将不胜感激!感谢

1 个答案:

答案 0 :(得分:1)

您必须对文件进行base64编码。

我在github上找到了一个代码示例。我自己没有测试过,但是应该在正确的方向上给你一个好的推动......

   $picture = file_get_contents($file);
   $size = getimagesize($file);

   // base64 encode the binary data, then break it into chunks according to RFC 2045 semantics
   $base64 = chunk_split(base64_encode($picture));
   echo '<img src="data:' . $size['mime'] . ';base64,' . "\n" . $base64 . '" ' . $size[3] . ' />', "\n";

来源:https://gist.github.com/jasny/3938108

正如旁注。您使用Web的图像是否已优化?电子邮件客户端可能会阻止大图像,或者电子邮件客户端不会下载。