2009-11-19 78 views
1

我想在PHP中以字符串存储尖括号,因为我想最终使用mail()发送HTML电子邮件。php中的尖括号

以下是似乎不起作用的代码。

while(...) { 
    $msg .= "<img src=\"http://.../images/".$media['Path']."\"><br>"; 
    echo "message: ".$msg."<br>"; 
} 

我想要的是$ msg包含一系列由换行符分隔的图像(由$ media ['Path']提供)。然后$ msg被传递给mail()。

回声确认没有图像正在发送。而且,的确,我在电子邮件正文中没有收到任何图片。这是为什么发生?我该如何解决它?

+0

为什么你使用图像/东西作为电子邮件的路径? – jtbandes 2009-11-19 09:11:46

+0

错误。我不小心从代码的另一部分复制粘贴。 – user5243421 2009-11-19 09:23:11

回答

3

有在一封电子邮件中嵌入图像的方法有两种:

  1. 作为外部参考:<img src="http://...";和
  2. 嵌入到电子邮件中。

(1)是我猜你正在尝试做什么。许多邮件程序会(正确)阻止垃圾邮件发送者用于测试电子邮件帐户以获取活力的图像。

最好做(2)。请参阅PHP Email: Using Embedded Images in HTML Email。基本上你可以创建一个多部分的MIME邮件(这样你可以附加HTML和图片),然后通过cid而不是真实的URL来引用它们。这些对于收到它们的邮件程序的可疑程度要低得多,但显然会导致更大的邮件(因为图像可能会被发送10万次而不仅仅是发送URL)。

+0

我需要一个$ sep = sha1(date('r',time()))的数组,以便我可以识别每个图像?但是,我将如何循环遍历数组n次以将它们全部包含在html正文中? – user5243421 2009-11-19 09:31:03

+0

虽然这是一个很好的答案,但我似乎无法得到这个工作,而且我的时间表很严格。我发现我的代码中没有让img标签通过的错误。 谢谢,虽然! – user5243421 2009-11-19 11:20:18

1

您是否检查过得到echo'd的HTML?你可能有错误的图像路径。另外,如果您要发送电子邮件,则需要使用绝对路径(http://yoursite.com/images/theimage.jpg而不是images/theimage.jpg)。

此外,请确保您在mail()函数中正确设置了标题,以便它以HTML而不是明文形式发送。

+0

我认为这也是问题,但我确认了路径,而这似乎并不是。 – user5243421 2009-11-19 09:32:16

0

您也可以使用邮件包装,例如SwiftmailerPHPMailer这可能会帮助您解决您的问题。你已经说过你有时间限制,所以实际转换到使用类似的东西可能需要更长的时间。