我有一个基本如下的 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'>
但这指的是什么?我该如何对这样的图像进行编码?
任何帮助将不胜感激!!谢谢
最佳答案
您必须对文件进行 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
作为旁注。您使用的图像是否经过网络优化?大图像可能会被电子邮件客户端阻止,或者只是不会被电子邮件客户端下载。
关于PHP mail() - 图片并不总是加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210058/