2012-02-06 89 views
1

我創建了一個非常簡單的PHP系統,使用MySQL數據庫和PHP將郵件發送到郵件列表。它還沒有完成,因爲通過mail()函數發送的郵件馬上進入大多數郵件程序的垃圾文件夾,我將來會使用PHP連接到我的SMTP服務器。儘管我想先解決一些問題。

<table border="0"> 
<form method="post" action="send.php"> 
<tr><td>Onderwerp:</td><td><input type="text" style="width:200px;" name="sub" /></td></tr> 
<tr><td>Bericht:</td><td><textarea name="mes" style="width:200px; height:100px;"></textarea></td></tr> 
<tr><td></td><td><input type="submit" style="width:200px;" value="Verzend" /></td></tr> 
</form> 
</table> 

當消息在上面textarea的它提交給下面的腳本(send.php)填充:

while($row = mysql_fetch_array($result)){ 
$to  = $row['email']; 
$subject = $_POST['sub']; 
$message = $_POST['mes']; 
$headers = 'From: [email protected]>' . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion() . "\r\n" . 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

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

當然還有上面這一些腳本連接到數據庫等等,但這不是相關的。正如你所看到的,通過$ _POST接收到的消息文本被放入mail()函數中使用的變量中。

但是,當我在textarea中使用多行時,腳本中的某個位置全部轉換爲一個巨大的行,最終會創建一個亂七八糟的郵件。正如你們中的一些人可能看到的,我已經創建了一個標題,表示郵件的內容是HTML。這是因爲我在通過$ _POST發送的文本週圍放置了一個<p>元素。我試圖刪除它,因爲它可能是把它全部轉換成一行的東西。但是這沒有幫助。

當然,您可以在HTML中使用<br />,但如果要求列表中的所有用戶使用它來創建新行,那將是愚蠢的。所以:有沒有辦法讓電子郵件中的多行保留,而不必在文本框中填寫任何不同的內容?

感謝您提前回答!

回答

4

也許YPU正在尋找在PHP nl2br功能..

$message = nl2br($_POST['mes']); 
+0

謝謝!以下也是@xdazz。我以爲我曾嘗試nl2br()之前,它不工作。顯然我做錯了,因爲它現在完美了!一個很短的答案長問題... – Stijn 2012-02-06 15:29:30

1

如果你的郵件內容是HTML,檢查功能nl2br