【问题标题】:src attribute of <img> is missing when sending mail发送邮件时缺少 <img> 的 src 属性
【发布时间】:2015-05-11 00:51:59
【问题描述】:

我正在尝试从 php 发送包含图像的 HTML 邮件。

我收到了电子邮件,除了&lt;img&gt; 标记外,所有 HTML 标记看起来都不错。

电子邮件的信息如下所示:

$message = '&lt;img src="http://your-click.ch/wp-content/uploads/2014/11/logo1.png" alt="Your Click" width="131" height="52" border="0" /&gt;';

当我收到邮件时,我看到有一张图片,但它只是空白。当我检查元素时,我看到了这段代码:

<img alt="Your Click" width="131" height="52" border="0">

如您所见,缺少整个 src 属性?为什么?

【问题讨论】:

  • /&gt; 也被替换为 &gt;,因此 HTML 被解析了。也许您的邮件软件会删除图像?
  • 大多数邮件客户端会删除图片,因为他们滥用跟踪电子邮件地址是否对垃圾邮件发送者有效
  • 顶部是否有消息要求您下载图像?
  • @HelloUniverse 是的,是的。有没有办法强制下载图片?
  • 我不知道;不幸的是,我觉得它内置在电子邮件客户端中,您可能无法使用。您可以做的是提供将在不显示图像时显示的替代文本。这样,至少屏幕上有一些东西。当允许图像下载时,用户可以看到所有内容

标签: php html email


【解决方案1】:

出于安全原因,某些电子邮件客户端会过滤掉外部链接的图像。尝试对图像进行编码并将其包含在邮件正文中,而不是外部链接。

【讨论】:

  • 并非总是可以对电子邮件中的所有图像进行编码。我和其他许多人都成功使用了外部图像
【解决方案2】:

图片可能被收件人邮件服务器过滤,尝试base64_encode图片,即:

$image = file_get_contents('http://your-click.ch/wp-content/uploads/2014/11/logo1.png');
$message = '<img src="data:image/png;base64,'.base64_encode($image).'" alt="Your Click" width="131" height="52" border="0" />';

【讨论】:

  • 我以前也遇到过类似的问题,base64 是我解决它的方法,所以这得到了我的投票
  • 我尝试了该代码,但我仍然遇到同样的问题。 src 属性不会出现。
  • 您是否尝试过发送给其他收件人?如果有,结果如何?
【解决方案3】:

看看以下是否有帮助

$message = '<img src="http://your-click.ch/wp-content/uploads/2014/11/logo1.png" alt="Your Click" width="131" height="52" border="0" style="width:131px; height:52px; border:0px; background:url('http://your-click.ch/wp-content/uploads/2014/11/logo1.png')" />';

【讨论】:

  • 这对我不起作用。我得到的是:&lt;img style="width:131px;min-height:52px;border:0px;background:url('')" alt="Your Click" width="131" height="52" border="0"&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 2011-08-10
  • 2014-09-09
  • 1970-01-01
相关资源
最近更新 更多