PHP новый разрыв строки в сообщениях электронной почты

У меня есть следующий код:

$message = "Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\n The seller, $bid_user is making this offer.\n \nItem Title : $title\n \nAll the best,\n $bid_user\n $email\n "; echo $message; $htmlContent = $baseClass->email_friend($item_number, $title, $bid_price, $bid_user, $mcat, $message, $email, $VIEWSTATE, $EVENTVALIDATION, $URL); 

Проблема в том, что новый разрыв строки (\n) не работает.

Попробуйте \r\n вместо \n

Разница между \ n и \ r \ n

Следует отметить, что это применимо к возврату строки в электронных письмах. Для других сценариев, пожалуйста, обратитесь к ответу rokjarc.

Я знаю, что это старый вопрос, но в любом случае это может помочь кому-то.

Я использую PHP_EOL для этих целей (из-за кросс-платформенной совместимости).

 echo "line 1".PHP_EOL."line 2".PHP_EOL; 

Если вы планируете показывать результат в браузере, вы должны использовать "<br>" .

EDIT: поскольку ваш точный вопрос касается писем, все немного отличается. Для чисто текстовых сообщений см. Принятый ответ Брендана Буллена. Для электронных писем HTML вы просто используете форматирование HTML.

Вы строите эту строку, используя одиночные или двойные кавычки? \ r и \ n работают только с двойными кавычками, а также с встроенными переменными. Например:

 $foo = 'bar'; echo 'Hello \n $foo!'; 

выведет:

 Hello \n $foo! 

Но:

 $foo = 'bar'; echo "Hello \n $foo!"; 

выведет:

 Hello bar! 

Если вы выходите на html или html-электронную почту, вам нужно будет использовать или или <br /> вместо \n .

Если это всего лишь текстовая электронная почта: возможно, вы используете ' вместо " ? Хотя тогда ваши значения не будут вставлены …

вы можете использовать "Line1<br>Line2"

EDIT: Возможно, ваш класс для отправки сообщений электронной почты имеет возможность для электронных писем HTML, а затем вы можете использовать <br />

1) Двойные кавычки

 $output = "Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n"; 

Если вы используете двойные кавычки, тогда \ n будет работать (в браузере не будет новой строки, но посмотрите исходный код в вашем браузере – символы \ n будут заменены на новые строки)

2) Одиночные кавычки не влияют на двойные кавычки:

 $output = 'Good news! The item# $item_number on which you placed a bid of \$ $bid_price is now available for purchase at your bid price.\nThe seller, $bid_user is making this offer.\n\nItem Title : $title\n\nAll the best,\n $bid_user\n$email\n'; 

все символы будут напечатаны как есть (даже переменные!)

3) Разрывы строк в HTML

 $html_output = "Good news! The item# $item_number on which you placed a bid of <br />$ $bid_price is now available for purchase at your bid price.<br />The seller, $bid_user is making this offer.<br /><br />Item Title : $title<br /><br />All the best,<br /> $bid_user<br />$email<br />"; 
  • В вашем браузере будут разрывы строк, а переменные будут заменены их содержимым.

если вы выводите код как html – change / n ->
и делать echo $ message;

Когда мы вставляем какой-либо разрыв строки с языком программирования, код символа для этого «\ n». php делает вывод, но html не может отобразить, что из-за перерыва строки htmls
, поэтому простой способ выполнить эту работу заменяет все "\ n" на "
«поэтому код должен быть

 str_replace("\n","<br/>",$str); 

после добавления этого кода вам не придется использовать pre tag для всех выходных описаний.

скопировал это сообщение с этого веб-сайта :