2010-11-08 83 views
0

我有一个PHP脚本中的邮件()函数。它发送HTML就好 - 标题设置正确。然而,什么是不正确的是HREF的表示 - 它们出现在Thunderbird中全是乱码。PHP邮件()搞砸了HTML href的

这里是什么派:

<a href='/index.php?page=blahdeblah'>Click</a>

但接收到的是这样的:

Click</index.php?page=blahdeblah>

通知中的链接文本标签之前,没有结束标记(即使一个IS包含在原始的PHP字符串中)

我使用的标头是这样的:

$headers = 'From: [email protected]' . $url_short . "\r\n"; 
$headers .= 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

(一些PHP变量使用)

任何人都可以用这种特殊的问题上需要帮助?

+1

如果没有别的,链接到'/ index.php'不太可能。尝试一个绝对的URL。链接是否可以在其他电子邮件客户端中使用? – ceejayoz 2010-11-08 22:07:09

+0

我觉得奇怪的是,报价也被剥离出来。尝试用双引号'Click'进行测试,看看它是否做同样的事情? – stealthyninja 2010-11-08 22:20:27

+0

@stealthyninja - 我试了双引号无济于事,但谢谢:) – Bojangles 2010-11-09 08:09:01

回答

1

试着改变你的锚标记:

<a href="http://www.domain.com/index.php?page=blahdeblah">Click</a>

  • 前缀您的完整域名的URL链接
  • 在双引号,而不是单一的(HTML属性括href属性应该总是用双引号,尽管允许单引号)
+0

“应该”是双引号的任何特定原因?它更常用,但规范同样允许。 – 2010-11-08 22:21:32

+0

根据我的经验,在单引号中包含html属性并不总是适用于所有浏览器/电子邮件客户端。我不知道发生这种情况的确切原因,但我猜测这是因为不同的语言对单引号和双引号的解释不同。在这种情况下,单引号可能会搞乱PHP邮件()函数(如Resorath指出的那样),该函数构造了要在电子邮件中发送的最终消息。 – Shivaas 2010-11-08 22:31:09

+0

这很好 - 我没有使用http://路径。至于单引号和双引号,那是因为它们在PHP字符串中。我会改变它们以保持兼容性。 – Bojangles 2010-11-09 08:14:38

1

如果你检查消息的来源,它看起来是正确的,那么它可能是Thunderbird显示不正确的东西。如果您在电子邮件的来源中发现错误,那么您的PHP脚本可能存在问题。

+0

我认为这是PHP方面 – Bojangles 2010-11-09 08:11:20

0

你可以显示你的整个邮件()电话?这可能是单引号使用不当的问题。

+0

这不是,但谢谢。问题是没有使用整个URL(http://www.domain.com位),但无论如何感谢:) – Bojangles 2010-11-09 08:15:16

1

ceejayoz提到它,但:链接到相对URL不会按预期工作,并可能是问题的原因。如果这不能解决问题,那么看看它是否也发生在其他读者身上。

+0

请参阅我上面的评论@ceejayoz。谢谢! – Bojangles 2010-11-09 08:10:45