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

标签 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'>

但这指的是什么?我该如何对这样的图像进行编码?

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

最佳答案

您必须对文件进行 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/

相关文章:

javascript - event.charCode 在 Firefox 中不起作用

jquery - 具有数据属性的 HTML 选项元素。是否可能,如果可能,如何使用 jQuery 检索值?

php - 服务器可以在不更改网页代码的情况下强制浏览器等待吗?

php - 获取最后修改的目录

java - PHP 安全漏洞?

php - Summernote - 从服务器删除图像

php - 如何将 CSS 添加到 PHP 脚本?

javascript - 图像未在 IE 8 中显示

javascript - 只有五分之一的 div 转换正确

php - 联系表单 ajax PHP 调用在屏幕上打印回显而不是返回成功