【问题标题】:Send mail with embeded image without a library in php?在没有 php 库的情况下发送带有嵌入图像的邮件?
【发布时间】:2018-07-26 18:25:53
【问题描述】:

我正在使用 php 的mail() 函数发送邮件。我在 html 代码中使用 base64 编码嵌入图像,但在 gmail 中它不显示。 我读到最好的方法是在 html 代码中使用 cid 并附加图像,但我发现只有使用 phpmailer 的代码,我想避免但问题是,是否可以使用 php mail函数还是有一些简单的类来简化流程?

    $message = $html_mail;
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $headers .= 'To: '. $to . "\r\n";
    $headers .= 'From: My website <'.$admin_mail.'>' . "\r\n";
    $response = mail($to, $subject, $message, $headers);

【问题讨论】:

  • 问题,图片是可公开访问(通过 url)还是您希望附加它?
  • 你确定是 gmail 的问题吗?您可以使用任何其他电子邮件客户端查看您的图像吗?

标签: php html-email mailing


【解决方案1】:

除了使用 base64_encode 图像,您应该使用带有服务器 src 路径的 html 图像标签,以便从您的服务器下载。

<img src="http://www.yourserver.com/myimages/image1.jpg">

由于您的邮件具有 text/html 标题图像,因此将通过电子邮件客户端自动解析。

【讨论】:

  • 你说“应该使用”,如果他的要求阻止了呢?我假设它确实如此,因为他特别询问发送嵌入式图像。
  • Joey 是真的,我需要嵌入图像,因为 gmail 不显示远程图像(在我的情况下,可能是因为我正在另一台服务器上测试邮件进入垃圾邮件),但是嵌入了带有 cid src 的图像工作,但我需要使用 phpmailer。
【解决方案2】:

如果您查看 Gmail 中的“原始来源”,您可能会发现 gmail 正在编辑 html 以删除图像。 idk是否这样做。我会尝试从 gmail 的电子邮件中复制 html 并将其放入 html 文件中,看看它是否正确加载到浏览器中。然后您就可以确定是 gmail 搞砸了,还是其他地方的错误。

仅供参考,发送适用于所有电子邮件客户端的 html 电子邮件可能是一个巨大的痛苦。我所知道的最好的指南是这个 - https://www.sitepoint.com/how-to-code-html-email-newsletters/。 SitePoint 还出售一本关于它的书籍,它是 IMO 的黄金标准。

祝你好运!

【讨论】:

  • 我知道发送格式良好的邮件很痛苦,但我的问题只是图像,是的 gmail 修改内容并且不显示 base64 嵌入图像。感谢您的链接。
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 2011-06-01
  • 2017-04-21
  • 2012-04-07
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2017-09-12
相关资源
最近更新 更多