2009-08-03 4 views
2

У меня есть следующий код, который отправляет сообщение с помощью функции mail(). Все работает отлично, за исключением того, что разрывы строк в конце каждой строки не работают. Как вы можете видеть, я использую «\ r \ n», надеясь, что это даст мне разрыв строки, но я не добавил <br>, чтобы получить перерыв, но я бы предпочел не использовать это, если кто-то не имеет клиент электронной почты HTML.Разрывы строк в PHP, похоже, не работают

<?php 
    $to = '[email protected]'; // Was a valid e-Mail address, see comment below 
    $name = $_REQUEST['name'] ; 
    $email = $_REQUEST['email'] ; 
    $subject = $_REQUEST['subject'] ; 
    $message = $_REQUEST['message'] ; 

    $content = 'Name: '.$name."\r\n"; 
    $content .= 'Email: '.$email."\r\n"; 
    $content .= 'Subject: '.$subject."\r\n"; 
    $content .= 'Message: '.$message."\r\n"; 

    $headers = 'MIME-Version: 1.0' ."\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n"; 

    // Additional headers 
    $headers .= 'To: iVEC Help <[email protected]>'. "\r\n"; 
    $headers .= 'From: '.$name.' <'.$email.'>' . "\r\n"; 

    mail($to, $subject, $content, $headers); 

?> 

<p> You sent it ... good work buddy </p> 
<p> <?php '$name' ?> </p> 
+4

Я взял на себя смелость заменить e- Почтовый адрес, поскольку он был настоящим, и спамеры просто любят сканировать Интернет для действительных адресов электронной почты. –

+0

Спасибо, я напомнил себе это сделать и все же забыл. Боюсь, что спам-боты – Ankur

+1

тоже найдут ссылку на историю. И он будет доступен в дампе базы данных CC. – falstro

ответ

7

Вы отправляете его как HTML - меняете тип контента на text/plain, и он должен работать.

2

Я не эксперт в этой области, но предполагаю, что вы задаете тип содержимого text/html, что подразумевает html-рендеринг (что означает, что перерывы строк переводятся в пробел). Если вы не используете какие-либо HTML-элементы (которые не отображаются), попробуйте установить тип содержимого в text/plain.

4

Проблема заключается в том, что вы говорите, в заголовках, что почта является HTML электронной почты:

$headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n"; 

Если вы хотите, чтобы Compability с обеих HTML и текстовых клиентов, рекомендуется использовать многосекционный тип содержимого. Это может быть достигнуто по-разному, но один простой способ - использовать библиотеку, которая может это сделать для вас. Например, вы можете использовать PEAR:Mail_Mime

0

Как упоминалось ранее, либо установить его в текст/простой или добавить HTML перерыв на разрыв строки:

$content = 'Name: '.$name."</br>\r\n";

+1

Это '
' (или '
' в HTML). – grawity