2014-01-23 26 views
0

我一直在使用PHP的内置mail()函数发送带内嵌图像的多部分邮件消息。我的客户通知我他们需要使用通过身份验证的SMTP发送邮件,但他们坚持我们无法修改其服务器环境(因此我无法将PHP配置为使用SMTP)。phpmailer类 - 内嵌嵌入图像但不是来自文件源

因此,我现在使用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类方法。

回答

4

This是你需要的。它允许编码 二进制文件(我假设base64?) 字符串值而不是文件。

$mail->AddStringEmbeddedImage($base_64, 'CID_identifier'); 
+0

漂亮!我找到了'addStringAttachment'函数,但不知道这个函数。 –

+2

对于任何可能存在此问题的人来说都是一个重要提示:'addStringEmbeddedImage()'和'addStringAttachment()'需要一个原始字符串* NOT *已经base64_encoded。 –