2009-11-19 79 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這可能會幫助您解決您的問題。你已經說過你有時間限制,所以實際轉換到使用類似的東西可能需要更長的時間。