2009-05-27 73 views
2

我正在使用一個郵件函數發送一個包含在變量$ body中的消息。我想用一些粗體字和一些中斷標籤將信息發送給我自己。爲什麼在我的PHP字符串中顯示html標籤?

這裏是我的代碼(定界符):

$body = <<<CTS 
<h1><b>Order for $name on datevariable</b></h1><br /><br /> 

<b><u>Administrative Details</u></b><br /> 
<b>Employee ID:</b> $id<br /> 
<b>Cost Center:</b> $cost_center<br /> 
<b>Approved By:</b> $approved_by<br /> 
<b>Delivery Bldg:</b> $delivery_bldg<br /> 
<b>Delivery Contact Email:</b> $delivery_contact<br /> 
<b>Ext:</b> $del_contact_ext<br /> 
CTS; 

出於某種原因,當我收到的電子郵件,它看起來像這樣:

<h1><b>Order for James Important on datevariable</b></h1><br /><br /> 
<b><u>Administrative Details</u></b><br /> 
<b>Employee ID:</b> 213123<br /> 
<b>Cost Center:</b> 132123<br /> 
<b>Approved By:</b> Chris Seckla<br /> 
<b>Delivery Bldg:</b> 6<br /> 
<b>Delivery Contact Email:</b> [email protected]<br /> 
<b>Ext:</b> 56<br /> 

它填補了變量值,但對於一些原因忽略了html標籤。有人能告訴我如何解決這個問題嗎?

此外,它忽略了中斷標記,並且只在我留下一行空格時放置中斷。對此有何想法?

+0

感謝您的意見!它效果很好! MIME和字符集是一個大問題,因爲我注意到只有Phobis提到它,而Marc選擇不提及它,但它工作不管? – zeckdude 2009-05-27 03:41:49

+0

如果您正在處理附件,通常只需要MIME版本。只有擁有國際字符或其他一些奇怪的字符集時,charset纔是重要的,大多數用戶的電子郵件客戶端默認不會處理該字符集。包含它們是一種很好的做法,但我選擇不爲了簡潔起見。 – 2009-05-27 04:12:01

回答

16

如果這是一封電子郵件,則必須將mime類型設置爲text/html而不是text/plain。否則,您的電子郵件閱讀器會將該郵件解釋爲純文本並忽略所有的html標籤。

例如,假設你調用的函數mail像這樣:

mail($to, $subject, $message, $headers) 

$headers,你需要沿着這些路線的東西(調整你的具體情況,當然):

$headers = "From: [email protected]\r\n"; 
$headers .= "Reply-To: [email protected]\r\n"; 
$headers .= "Content-Type: text/html"; 

如果您想發送純文本和html電子郵件(所以非html閱讀器可以看到沒有所有這些標籤的乾淨版本的電子郵件),我會建議看看this教程以獲得更詳細的說明多部分電子郵件的國家。

3

你必須設置從PHP時發送的電子郵件使用HTML格式來顯示一個額外的頭:

的Content-Type:text/html的; charset = whatever

3

確保您發送聲明它是HTML的標題...

例如:

mail('[email protected]', 'Subject', 
'<html><body><b>Hello</b></body></html>', 
"To: The Receiver <[email protected]>\n" . 
"From: The Sender <[email protected]>\n" . 
"MIME-Version: 1.0\n" . 
"Content-type: text/html; charset=iso-8859-1"); 
0

如果你想用PHP發送郵件,我會建議你使用PEAR Mail_Mime包,而不是普通郵件功能

相關問題