使用PHP将从GD创建的动态图像嵌入到电子邮件中

时间:2011-07-05 22:17:10

标签: php email embedded-resource

对于初学者,我使用以下内容:

  • php 5.3
  • PHPmailer - 使用谷歌应用程序发送stmp电子邮件
  • GD创建iamge

  • 我可以获取以前存在的文件,将文本添加到该文件并输出到浏览器。

  • 我可以使用phpmailer中的简单功能发送包含现有嵌入图像的电子邮件
  • 能够动态修改第一个文件,将其保存在内存中,然后在我的电子邮件中嵌入该图像。

创建图像时,我使用的是非常基本的示例脚本:

修改

我将代码修改为以下内容:似乎运行速度更快,更易于阅读。然而,创建了一个实际文件,而我更喜欢一个临时文件,我可以在之后销毁或只是使用二进制数据。是否有类似于imagegif()的二进制输出函数?

$photo = imagecreatefromgif('sample.gif');
imagealphablending($photo, true);
$fontsize = 20;
$font = '../times.ttf';
$fontcolor = imagecolorallocate($photo, 0, 0, 0);
$angle = 0;
$x = 100;
$y = 100;
$text = 'THIS IS A BLOB OF TEXT YO!';
imagettftext($photo, $fontsize, $angle, $x, $y, $fontcolor, $font, $text);
imagegif($photo, 'test.gif');

不幸的是,这需要将我的文件输出到浏览器,然后继续执行脚本的其余部分并发送电子邮件(没有嵌入的图像)。

我知道我可能错过了一些简单的事情但是之前有人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:1)

首先你需要a)使用imagegif函数的第二个参数将图像保存到临时文件中; b)使用PHP输出缓冲来捕获发送到输出的结果并从响应中清除它(参见http://php.net/ob)。

之后您需要知道如何将图像作为附件嵌入到电子邮件信函中,或将其复制为可用http地址的真实文件,并将<img href=""/>指向它。