2

我正在使用 Zencart 向客户发送带有礼券的电子邮件。证书是由使用 imagepng 的 php 文件生成的,我可以毫无困难地使用它在网页上显示

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

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

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

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

在过去的几天里,这一直让我发疯。任何帮助,将不胜感激。

优雅

4

2 回答 2

0

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

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

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

于 2012-10-19T04:16:51.733 回答
0

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

如果您想引用附加的图像,请分配一个 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--
于 2012-10-22T07:31:29.170 回答