Новая строка 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) не работает.

30
задан Brendan Bullen 5 September 2013 в 14:13
поделиться

5 ответов

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

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

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

46
ответ дан 27 November 2019 в 23:00
поделиться

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

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

выведет:

Hello \n $foo!

Но:

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

выведет:

Hello
bar!
19
ответ дан 27 November 2019 в 23:00
поделиться

РЕДАКТИРОВАТЬ: Возможно, в вашем классе для отправки электронных писем есть опция для электронных писем в формате HTML, а затем вы можете использовать

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 />";
  • В вашем браузере будут разрывы строк, а переменные будут заменены с их содержанием.
4
ответ дан 27 November 2019 в 23:00
поделиться

если вы выводите код в формате html - измените /n -->
, и сделайте echo $message;

2
ответ дан 27 November 2019 в 23:00
поделиться

Если вы выводите сообщение в формате html или html, вам нужно будет использовать
или
вместо \ n .

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

6
ответ дан 27 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: