PHP mail() - 图像并不总是加载
Posted
技术标签:
【中文标题】PHP mail() - 图像并不总是加载【英文标题】:PHP mail() - Images don't always load 【发布时间】:2015-07-24 11:01:44 【问题描述】:我有一个 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】:您必须对文件进行 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
作为旁注。您使用的图像是否经过网络优化?大图像可能会被电子邮件客户端阻止,或者只是没有被电子邮件客户端下载。
【讨论】:
谢谢!在了解了 base64 之后,我发现了这篇出色的帖子 - ***.com/a/1607263/4120885。我通过他的功能喂了我的$message
,它嵌入了图像以上是关于PHP mail() - 图像并不总是加载的主要内容,如果未能解决你的问题,请参考以下文章