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

时间:2013-10-09 13:43:27

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

以下是带有图像的身体部位:

<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?

我对真正复杂的代码不感兴趣,对我来说,我不能忍受类似于那些我根本不理解它的东西。

1 个答案:

答案 0 :(得分:4)

以下是您的需求:

<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

中找到有关此内容的更多信息

编辑:这可能很明显,但是......无法强制邮件客户端显示图像。但有些客户只是避免下载,所以在这种情况下,这是一个有效的解决方法。