使用php代码igniter通过电子邮件发送base 64中的内联图像

使用php代码igniter通过电子邮件发送base 64中的内联图像,php,Php,我使用php在运行时动态生成图像,并通过浏览器将它们显示在Base64中。 我需要通过电子邮件发送相同的页面/html文档,但这种显示图像的方法无法通过电子邮件工作 我找到了两个代码点火器库来尝试帮助我完成这项任务,其中两个不起作用 第一个给我 无法使用PHP mail()发送电子邮件。 您的服务器可能未配置为 使用此方法发送邮件 从:“SystemDDX”返回路径: 答复:“内部-33e@google.com" X发送方:内部-33ek@google.com X-Mailer:CodeI

我使用php在运行时动态生成图像,并通过浏览器将它们显示在Base64中。 我需要通过电子邮件发送相同的页面/html文档,但这种显示图像的方法无法通过电子邮件工作

我找到了两个代码点火器库来尝试帮助我完成这项任务,其中两个不起作用

第一个给我

无法使用PHP mail()发送电子邮件。 您的服务器可能未配置为 使用此方法发送邮件

从:“SystemDDX”返回路径: 答复:“内部-33e@google.com" X发送方:内部-33ek@google.com X-Mailer:CodeIgniter X-Priority:3 (正常)消息ID: Mime版本:1.0内容类型: 文本/纯文本;字符集=utf-8 内容传输编码:8比特

第二个是非常过时的

到目前为止,我唯一能够工作的方法就是使用代码点火器 $this->email->attach(“C:\myfile.jpg”) 然后在我的html参考中使用

问题是我的映像在base64中,因为我正在动态生成它,所以如果我不能找出其他任何东西,如何将base64恢复为特定的文件名,同时将其保留在内存中

如果您有任何建议和帮助,我们将不胜感激

到目前为止,我唯一成功的方法是<代码>

很好,因为这是应该做的。正如您所发现的,在主流浏览器之外,内联base64图像的支持非常差

问题是我的映像在base64中,因为我正在动态生成它,所以如果我不能找出其他任何东西,如何将base64恢复为特定的文件名,同时将其保留在内存中

那么,您如何将该图像转换为base64呢?您肯定在图像数据上使用了
base64\u encode
,对吗

那么,别那么做

相反,将图像数据写入磁盘上的新文件,然后在将其附加到传出邮件时引用该新图像文件。问题解决了

这假设您选择的电子邮件库中的附件方法只接受真实文件——阅读文档,我打赌您可以直接传递图像数据,同时给它一个“假”文件名

<>你可能想考虑使用另一个现代邮件库,比如。它可以顺利、轻松地完成


我正在动态生成火花线图形,并使用它获取内容:

function OutputToDataURI() {
    ob_start(NULL,4096);
    $this->Output();
    header('Content-type: text/html');
    return "data:image/png;base64,".base64_encode(ob_get_clean());

}
在这种情况下,这将获得原始图像数据:

public function GetImageData() {
    ob_start();
    $this->Output();
    return ob_get_clean();
}

谢谢Charles SwiftMailer看起来很有趣,我会尝试一下,但如果可能的话,我想找到一个本地解决方案。我用这个函数得到base64。我正在动态生成sparklines图形,并使用它来获取内容函数outputDataUri(){ob_start(NULL,4096);$this->Output();header('content-type:text/html');return“data:image/png;base64,”。base64_encode(ob_get_clean());}@user,我更新了我的帖子,演示了如何获取原始图像数据,考虑到你作为源代码发布的函数,我如何在代码中引用它,“文件名”是什么?要在中用于cid?文件名是您所需要的,在这里完全不重要。这些信息永远不会提供给用户,所以您可以做一些完全内部的事情,比如,随机数加上文件内容的md5/sha1散列。