我在将PHP脚本生成的图像嵌入到MIME电子邮件中时遇到了一些麻烦

时间:2012-10-19 03:09:08

标签: php image mime

我正在使用Zencart向客户发送带有礼券的电子邮件。证书是由一个使用imagepng的php文件生成的,我没有麻烦用它来显示在网页上

echo "<img src=\"getImage.php\"/>". 

然而,当我尝试在电子邮件脚本中执行相同操作时,它不会显示(尽管任何标准图像都会显示)。我认为这与动态生成有关,但我似乎无法解决它。我试图暂时保存图像,为imagepng提供一个由tempnam生成的名称,通过这样做,

$fname = tempnam("", "img");
imagepng($im, $fname . ".png");

但由于某种原因,它不会保存图像。 我想使用ob_get_contents,但我不知道如何去做它以便它给我一个我可以在图像标签内使用的值。

过去几天这让我疯了。任何帮助将不胜感激。

格雷斯

2 个答案:

答案 0 :(得分:0)

电子邮件不在您的网络中,因此您必须设置图像的绝对路径:

<img src="http://yoursite.com/yourimage.php"/>

或者使用base64编码将其包含在电子邮件中,但它更复杂。

答案 1 :(得分:0)

诀窍是在电子邮件中包含图像。如果您的图像是在发送时动态创建的,则需要在发送时运行PHP脚本,并将结果包含在消息中。如果您希望在客户端查看邮件时生成图像,那么就像@Laleft所说,您必须在<img>标记的链接中包含完整的网址。

如果您想引用附加图片,请指定Content-Id:并使用cid:链接引用它,如下所示:

From: you <spammer@example.com>
To: recipient <victim@example.net>
Subject: Buy V!agra Ciali$
Content-type: multipart/related; boundary="moo"

--moo
Content-type: text/html; charset="utf-8"
Content-transfer-encoding: quoted-printable

<html><body><img="cid:moo.png"></body></html>

--moo
Content-type: image/png
Content-disposition: inline
Content-id: "moo.png"
Content-transfer-encoding: base64

///base64/encoded/output/of/PHP/script/goes/here//==

--moo--