v3shin
@v3shin
Веб-шаман

Как убрать переносы строк в письме?

Всем привет. Возникла проблема с лишними переносами строк при получении писем. Код примерно такой:
function Send() {
	$header = '...';
	$body = $this->CreateBody();
	$result = $this->MailSend($header, $body);
	return $result;
}

function CreateBody() {
	$result = "";
	$result .= $this->EncodeString($this->Body, $this->Encoding);
	return $result;
}

function EncodeString ($str, $encoding = "base64") {
	$encoded = $this->FixEOL($str);
	if (substr($encoded, -(strlen($this->LE))) != $this->LE)
	$encoded .= $this->LE;
	return $encoded;
}

function FixEOL($str) {
	$str = str_replace("\r\n", "\n", $str);
	$str = str_replace("\r", "\n", $str);
	$str = str_replace("\n", $this->LE, $str);
	return $str;
}

function MailSend($header, $body) {
	$to = '...';
	$sbj = '...';
	$rt = @mail($to, $sbj, $body, $header);
	return true;
}


В итоге $body непосредственно перед отправкой формируется правильно, но в письме приходит с лишними переносами, которые корежат текст (скрин из свойств письма в Яндекс Почте). Подскажите, пожалуйста, в какую сторону копать, чтобы исправить текст?

5c38cd95e29c6486618386.png
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
Скорей всего проблема здесь:
if (substr($encoded, -(strlen($this->LE))) != $this->LE)
  $encoded .= $this->LE;

Я правда не вижу где у вас str попадает в encoded, но если, например, в str терминатор строк LF (что более чем вероятно), а у вас LE это CRLF, то в результате будет LFCRLF. Правильно - выкинуть в конце строки любые терминаторы CR и LF и добавить CRLF.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
IMAGINWEB Москва
от 55 000 до 85 000 руб.
Revealbot Москва
от 100 000 руб.
16 июн. 2019, в 19:42
500 руб./за проект
16 июн. 2019, в 18:38
5000 руб./за проект
16 июн. 2019, в 17:14
5000 руб./за проект