【问题标题】:PHP mail() - Images don't always loadPHP mail() - 图像并不总是加载
【发布时间】: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'>

但是这指的是什么?我将如何编码这样的图像?

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

【问题讨论】:

    标签: php html


    【解决方案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 之后,我发现了这篇出色的帖子 - stackoverflow.com/a/1607263/4120885。我通过他的功能喂了我的$message,它嵌入了图像
    猜你喜欢
    • 2018-07-05
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多