PHP - 自动下载 HTML 电子邮件中的图像

标签 php html email

我有一个页面正在发送包含以下 PHP 代码的 HTML 电子邮件:

$message = $body;//Create message body
$sender = $sender;//Create sender
$to = $customer_email;//Set who the email is being sent to
$subject = 'Quote - '.$_SESSION['quote_number'];//Subject for email
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";//Content-type header for mail() PHP built-in function
$headers .= 'To: '.$to . "\r\n";//To header for mail()
$headers .= 'From: '.$sender . "\r\n";//From header for mail()
$mail = mail($to, $subject, $message, $headers);//Send Email

这是带有图像的 body 部分:

<img src="some_img.gif" alt="Title" width="400" height="55" align="left"/>

现在,当发送电子邮件时,图像不会自动下载,您必须右键单击它并下载它。有没有解决方案可以在 mail() PHP 函数中自动下载该图像?如果没有,最简单的方法是什么?

我已经对此做了一些研究,我已经看过超过 4 篇文章,这里有一些对我来说没有意义,所以我没有使用其中的代码。它们也相当过时了。

How to embed images in email

Embed images for use in email message using PHP?

我对真正复杂的代码不感兴趣,对我来说,我无法忍受我根本不理解的类和类似的东西。

最佳答案

这是您需要的:

<img src="data:image/gif;base64,<BASE64_ENCODED_IMG>" alt="Title" width="400" height="55" align="left"/>

<BASE64_ENCODED_IMG>应该是对 some_img.gif 的源二进制文件进行编码的结果转换为 Base64

您可以使用 PHP 即时完成此操作:base64_encode(file_get_contents('/path/to/some_img.gif')); 或者通过在线服务来完成,例如 http://www.base64-image.de/并复制并粘贴结果。

您可以在 Embedding Base64 Images 中找到有关此内容的更多信息。

编辑:这可能是显而易见的,但是...不可能强制邮件客户端显示图像。但有些客户端只是避免下载它们,因此在这种情况下这是一个有效的解决方法。

关于PHP - 自动下载 HTML 电子邮件中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273833/

相关文章:

html - sp_send_dbmail 在正文中嵌入 mhtml 文件

java - 我可以用 Java 在邮件服务器上执行搜索吗?

php - preUpdate Doctrine Listener 中的 Symfony 刷新

php - 如果在获得网站 paypal api 的 paykey 后,交易将由用户使用他们的 paypal 帐户完成怎么办?

php - 多行验证

html - 带有 iframe 的嵌入式网站中的 iOS 滚动问题

PHP 文件由浏览器下载,而不是由 Laravel 项目处理

php - 将使用 PHP 创建的 csv 文件导入 Excel 时,如何在数字字符串值中保留前导零?

javascript - 在电子邮件的正文中发送 JSON 消息,字符串在中流中断

没有 JavaMail API 的 Java POP3 消息解析器