Подтвердить что ты не робот

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) не работает.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

РЕДАКТИРОВАТЬ:, поскольку ваш точный вопрос касается писем, все немного отличается. Для чистых текстовых сообщений см. Brendan Bullen принятый ответ. Для электронных писем HTML вы просто используете форматирование HTML.

Ответ 3

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

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

выведет:

Hello \n $foo!

Но:

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

выведет:

Hello
bar!

Ответ 4

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

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

Ответ 5

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

Ответ 6

РЕДАКТИРОВАТЬ: Возможно, ваш класс для отправки сообщений электронной почты имеет возможность для электронных писем 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 />";
  • В вашем браузере будут разрывы строк, а переменные будут заменены их содержимым.

Ответ 7

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

Ответ 8

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

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

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

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