2010-11-08 28 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