2012-01-08 46 views
5

我得到了PHP郵件():函數爲我在我的網站上使用的表單工作。我現在試圖格式化$ body屬性,以便在我收到後續電子郵件時看起來更好,更有條理。

我試過\ n和我已經試過
無一不給我

下面是我的工作代碼的片段(我認爲這只是一個語法的事情,我做錯):

if(!empty($brandname) && !empty($firstname) && !empty($lastname) && !empty($email) && !empty($goals) && !empty($bio)){ 
     $to = '[email protected]'; 
     $subject = 'Submission Form'; 
     $body = 'Brand Name: '.$brandname.'<br />Name: '.$firstname.' '.$lastname.'<br />Email: '.$email.'<br />About the Company:'.$bio; 
     $headers = 'From: '.$email; 

這只是顯示<br />作爲電子郵件我收到的文本。當我使用\ n時(我認爲它實際上是正確的方式)。我究竟做錯了什麼?謝謝。此

$newline = ' 
'; 

使用$換行符變量

回答

1

最簡單的方法任何你想要的(:

+3

根據您輸入Enter鍵的位置,您將得到不同的結果,因爲Mac,Window和Linux使用'\ r'和'\ n'的不同組合處理換行符。 – 2012-01-08 23:02:39

1

manual page of the mail() function,我們瞭解到,爲了發送HTML電子郵件,需要額外的頭文件。這在Example #4中被簡明地證明。

但是,對於換行符,我不會建議使用HTML。爲此,只需在字符串中插入「\ n」,確保使用雙引號,如亞伯拉罕所述。

2

使用"<br>"\n而是將工作100%我發現

$subject="Mail from customer ".$_POST['Name'].`"<br>"`; 

享受:)

2

(PHP 4,PHP 5)

$body = 'Brand Name: '.$brandname."\r\n".'Name: '.$firstname.' '.$lastname."\r\n".'Email: '.$email."\r\n".'About the Company:'.$bio; 

使用"\r\n"換行符如上

+0

這工作。謝謝 – KarenAnne 2014-01-06 01:05:53

0

我無法爲Mohammad Saqib的回答添加評論,但我想說,您不應該使用<br>作爲\r\n的替代品,因爲這可能會導致電子郵件被'行太長'垃圾郵件過濾器。新的線路對於保持電子郵件更加人性化並允許成功交付非常重要!

我推薦的方法是:

$output[] = "line 1"; 
$output[] = "line 2"; 
$EmailBody = join("\r\n",$output); 

而且你必須確保你清理'頭文件,以避免用戶輸入頭注入,這裏是一個函數,它是雙重肯定停止注射:

function sanitize(&$data){ 
    return str_ireplace(array("\r", "\n", "%0a", "%0d"), '', stripslashes($data)); 
} 


$headers = 'From: '.sanitize($email); 

如果你想HTML標記的電子郵件顯示,使用標題更改類型:

$headers = 'Content-type: text/html;\r\nFrom: '.sanitize($email); 

如果您確實顯示了HTML,則應清理用戶輸入以避免任何意外...即HTML注入。在顯示用戶輸入HTML的任何地方使用此功能:

function htmlclean($str){ 
    return htmlentities($str, ENT_QUOTES); 
} 

例如, $ body =「品牌名稱:」。 htmlclean($名優產品);

相關問題