[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Письмо приходит с \n\r, как исправить?
Страницы: 1, 2
alerzo
Здравствуйте, использую отправку почты в таком виде

$to = "<$emailu>";
$subject = "Ответ на тикет от администрации $namebill";
$message = "<p>Тема тикета: проверка $tema<br/>
Ответ:
$text</p>";
$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: Ответ на тикет от администрации $namebill<$emailu>\r\n";
$headers .= "Reply-To: $emailu\r\n";
$headers .= "Content-type: text/html\r\n";
mail($to, $subject, $message, $headers);


Все работает но вместо переменной $text приходит нечто вроде
Ответ: 123\r\n123
Пробовал перед отправкой делать так:
$text = str_replace(array("\r\n", "\r", "\n"), "<br>", $text);
и так
$text = nl2br($text);

не помогает..подскажите как поправить?
bestxp
замени на PHP_EOL (php константа)
зачем 2 раза Content-Type ?
alerzo
не совсем понял как поправить..что заменить?
alerzo
кто нибудь знает в чем проблема?
killer8080
Цитата (alerzo @ 19.08.2014 - 15:13)
Ответ: 123\r\n123

это в скрипте, или в полученном письме?
sergeiss
Цитата (alerzo @ 19.08.2014 - 15:13)
но вместо переменной $text приходит нечто вроде

А где у тебя формируется переменная $text, где ты делаешь замену переносов строк? Порядок действий не нарушен, случайно так? В показанном тобой коде это не понятно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
bestxp
$name='=?UTF-8?B?'.base64_encode($namaPengirim).'?=';





$to = "<$emailu>";
$subject = "Ответ на тикет от администрации $namebill";
//так как кодировка UTF8 нужно закодировать соотвественно subj
$subject='=?UTF-8?B?'.base64_encode($subject).'?=';
$message = "<p>Тема тикета: проверка $tema<br/>
Ответ:
$text</p>";
$headers = "Content-type: text/html; charset=utf-8 \r\n";

$name='=?UTF-8?B?'.base64_encode($"Ответ на тикет от администрации $namebill").'?=';
$headers .= "From: $name<$emailu>\r\n";
$headers .= "Reply-To: $emailu\r\n";
$headers .= "MIME-Version: 1.0";
mail($to, $subject, $message, $headers);



Для UTF8 нужно кодировать соотвественно символы и верно указать mime-type
попробуй теперь отправить
inpost
bestxp
Согласно какому-то там RFC формату для писем необходимо указывать CRLF, то есть "\r\n" , PHP_EOL будет ошибкой.

alerzo
$text - как формируется? Переносы же в этой строке появляются, мне кажется, что ты грубо написал в одинарных кавычках \r\n, или в порядке, как указано в заголовке \n\r , что есть ошибка.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
alerzo
Пробовал вариант от bestxp

$to = "<$emailu>";
$subject = "Ответ на тикет от администрации $namebill";
//так как кодировка UTF8 нужно закодировать соотвественно subj
$subject='=?UTF-8?B?'.base64_encode($subject).'?=';
$message = "<p>Тема тикета: проверка $tema<br/>
Ответ:
$text</p>";
$headers = "Content-type: text/html; charset=utf-8 \r\n";

$name='=?UTF-8?B?'.base64_encode("Ответ на тикет от администрации $namebill").'?=';
$headers .= "From: $name<$emailu>\r\n";
$headers .= "Reply-To: $emailu\r\n";
$headers .= "MIME-Version: 1.0";
mail($to, $subject, $message, $headers);


в строке с переменной name был лишний $, но все равно не помогло..
по прежнему приходят символы..
sergeiss
alerzo, тебе уже 2 (два) человека сказали, чтобы ты показал код, который формирует переменную $text. А ты так о чем-то своем думаешь и код не показываешь.
Цитата (sergeiss @ 21.08.2014 - 11:00)
А где у тебя формируется переменная $text, где ты делаешь замену переносов строк?

Цитата (inpost @ 21.08.2014 - 17:58)
$text - как формируется?



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
alerzo
переменную text получаю так
$text=mysql_real_escape_string(substr($_POST['text'], 0, 102400));

В базе данных никаких таких символов нет, все нормально
sergeiss
Цитата (alerzo @ 22.08.2014 - 11:18)
переменную text получаю так
$text=mysql_real_escape_string(substr($_POST['text'], 0, 102400));

В базе данных никаких таких символов нет, все нормально

Я так и думал, что проблема не в том коде, что ты раньше показывал, а ранее.

Похоже, ты не просто не понимаешь, а совсем не понимаешь smile.gif Какая "база"? У тебя есть массив ПОСТ, который ты получаешь от юзера. Вот и обрабатывай эту строку, удаляй из нее ненужные символы.
Функция mysql_real_escape_string() готовит строку для записи в БД, но ты этого не делаешь, а отправляешь данные по почте. Поэтому данная функция тут вообще не нужна.

Чтобы проверить, что же у тебя в этой строке есть на самом деле, можно либо вывести ее на экран, либо сохранить в файл. А можно просто проанализировать посимвольно, средствами ПХП.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
alerzo
Подскажите как поправить?)
я не программист, пытаюсь исправить косяки человека который это делал..
alerzo
и да, я пробовал выводить переменную на экран, она выводится корректно без символов, а вот потом на почту приходит в том виде как прислал
inpost
alerzo
не используй mysql_real_escape_string тут.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.