php中的尖括号

时间:2009-11-19 09:09:48

标签: php html string email

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

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

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

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

回声确认没有发送图像。事实上,我在电子邮件正文中没有收到任何图片。为什么会这样?我该如何解决?

4 个答案:

答案 0 :(得分:3)

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

  1. 作为外部参考:<img src="http://...";和
  2. 嵌入电子邮件。
  3. (1)我想你要做的是什么。许多邮件程序将(正确地)阻止这些图像,因为它们被垃圾邮件发送者用来测试电子邮件帐户的活跃程度。

    最好做(2)。见PHP Email: Using Embedded Images in HTML Email。基本上,您创建了一个多部分MIME电子邮件(因此您可以附加HTML和图像),然后通过cid而不是真正的URL引用它们。对于接收它们的任何邮件程序来说,这些都不那么可疑,但显然会导致更大的电子邮件(因为图像可能会被发送100,000次而不是仅发送一个URL)。

答案 1 :(得分:1)

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

另外,请确保在mail()函数中设置了标题,以便将其作为HTML而不是纯文本发送。

答案 2 :(得分:0)

您还可以使用SwiftmailerPHPMailer等邮件包装,它可以帮助您解决问题。你已经说过你有时间限制,所以你可能需要更长的时间来实际转换为使用类似的东西。

答案 3 :(得分:-2)

要在尖括号中回显,请使用:

  &lt;  //<=
  &gt;  //>=

我认为php无法处理尖括号,因为它是: 尝试以下操作:

$varone='one';
$vartwo='two';

$b=' &lt;';
$concateOne='With Normal Brackets : '.$varone.'<'.$vartwo.'>'.'<br>';
$concateTwo='With Character Brackets : '.$varone.'&lt;'.$vartwo.'&gt;'.'<br>';

echo $concateOne;
echo '<br>';
echo $concateTwo;
echo '<hr>';
var_dump($concateOne);
echo '<hr>';
var_dump($concateTwo);
echo '<hr>';

在转储变量时,您会发现php不存储普通括号的值。