Текстовые сообщения в обычном текстовом сообщении, проблема с переносами строк - PullRequest
0 голосов
/ 04 ноября 2019

В форме заказа я даю возможность добавить несколько замечаний. Люди, задействованные до сих пор, использовали электронную почту для заказа, и на практике они добавили много замечаний помимо фактического заказа. Форма имеет текстовое поле. Когда я ввожу

 Dit is een oefening.
Komt de mail
a) wel aan
b) geeft hij de juiste weergave? 

текстовое поле, размещенное в PHP, отображается как:

Dit is een oefening.\r\nKomt de mail\r\na) wel aan\r\nb) geeft hij de juiste weergave?

Пока все хорошо, подумал я. Но в письме текст не разбивается, как задумано, в точности воспроизводится как эта строка

Dit een eefening. \ R \ nKomt de mail \ r \ na) wel aan \ r \ nb)geeft hij de juiste weergave?

Есть ли способ (желательно простой), чтобы я мог отформатировать такую ​​текстовую строку, чтобы она делала, как задумано?

Строка ($ xtravraag):включенный в строку if ($xtravraag != '') {$emailvraagk = "\r\n MAILBERICHT BIJ BESTELLING \r\n\r\n $xtravraag";} else {$emailvraagk = '';}

Я уже пробовал этот, который полностью портит результат: if ($xtravraag != '') {$emailvraagk = "\r\n".' MAILBERICHT BIJ BESTELLING'."\r\n\r\n".$xtravraag;} else {$emailvraagk = '';}

приводит к

\ r \ nMAILBERICHT BIJ BESTELLING \ r \ n \ r \ n $ xtravraag

и этот заголовок изначально работал нормально.

Почтовые заголовки включают в себя:

        'Mime-Version: 1.0' . "\r\n" .
        'Content-Type: text/plain; charset=UTF-8' . "\r\n" .         
        'Content-Transfer-Encoding: quoted-printable' . "\r\n" .
        'X-Mailer: PHP/' . phpversion()

Удаление кодировки передачи не вариант. Это необходимо для часто используемых диакритических знаков. Это требует UTF-8.

В соответствии с запросом код на страницах

 <fieldset><legend>Overige vragen of opmerkingen die geen bestelling zijn</legend>
  <textarea name='xtravraag' id='xtravraag' cols='76' rows='5'> </textarea>
  </fieldset>

Затем опубликовано

if (isset($_POST['xtravraag'])) {$xtravraag = $mysqli->real_escape_string(trim($_POST['xtravraag']));} else{$xtravraag='';}
echo  "extravraag: $xtravraag <br>";        //MOET WEG BIJ OPLEVERING 

и включает эхоэто показало, что полная строка

решена

real_escape_string сделал грязный трюк здесь.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Иногда mail() функция неправильно отображает разрывы строк "\r\n", вы можете попытаться сделать так, чтобы это было несколько строк, например:

if ($xtravraag != '') {$emailvraagk = "
 MAILBERICHT BIJ BESTELLING 

 $xtravraag";} else {$emailvraagk = '';}

Или используйте PHP_EOL для включения перекрестногоподдержка платформы:

if ($xtravraag != '') {$emailvraagk = PHP_EOL." MAILBERICHT BIJ BESTELLING ".PHP_EOL.PHP_EOL." $xtravraag";} else {$emailvraagk = '';}
0 голосов
/ 04 ноября 2019

Попробуйте отформатировать текстовое содержимое с помощью функции php nl2br().

...