Вопрос

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

<?php
  $to = 'user@example.com'; // 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 <help@ivec.com>'. "\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>
Это было полезно?

Решение

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

Другие советы

Проблема в том, что вы говорите в своих заголовках, что письмо является HTML-письмом:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top