我一直在使用PHP的内置mail()
函数来发送带有内嵌图像的多部分邮件消息。我的客户通知我他们需要使用经过身份验证的SMTP来发送邮件,但他们坚持认为我们无法修改他们的服务器环境(因此我无法将PHP配置为使用SMTP)。
因此,我现在使用phpmailer类发送消息。一切正常,除嵌入图像外。我已阅读文档并了解嵌入图片,我只需致电:
$mail->AddEmbeddedImage('path/to/image.jpg', 'CID_identifier');
很好,对大多数情况都有意义。但是,我嵌入的图像不是服务器文件系统上的静态文件。它由我编写的脚本动态呈现,并通过使用输出黄油在电子邮件脚本中捕获:
ob_start();
require_once( '_gen_piechart.php' );
$base_64 = base64_encode( ob_get_contents() );
ob_end_clean();
虽然我知道它可能有用,但我不希望将图像写入文件,包含在出站邮件中,然后再unlink()
。
之前是否有人遇到此案例并提出嵌入图像数据的解决方案?我没有看到用于嵌入除文件系统之外的图像数据的phpmailer类方法。
答案 0 :(得分:4)
AddStringEmbeddedImage就是您所需要的。它允许从包含图像二进制文件的字符串添加附件。
$mail->AddStringEmbeddedImage($fileContents, 'CID_identifier');