[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Искажение кодировки текста в заголовке письма
LRCenter
При отправке письма слетает кодировка строки "Адрес получателя", хотя текст в теле письма в порядке.

$headers  = "Content-type: text/plain; charset=utf-8 \r\n"; 
$headers .= "From: Адрес отправителя <mymail@mailbox.ru>\r\n";
mail("mymail@mailbox.ru", "My Subject", "Текст \n Еще текст", $headers);


Почему? И как быть?



Спустя 11 минут, 37 секунд (6.06.2011 - 10:00) ИНСИ написал(а):
LRCenter обработай через base64_encode

Спустя 12 минут, 58 секунд (6.06.2011 - 10:13) LRCenter написал(а):


$headers  = "Content-type: text/plain; charset=utf-8 \r\n"; 

$fromtext=base64_encode("Адрес отправителя");

$headers .= "From: $fromtext <mymail@mailbox.ru>\r\n";
mail("mymail@mailbox.ru", "My Subject", "Текст \n Еще текст", $headers);


velbox
Не прокатывает. Выводит строку символов. Если не ошибаюсь base64_encode для бинарных данных. А тут просто кодировка слетает, и главное, не могу понять от чего, с текстом в теле жа все нормально :(

Спустя 9 минут, 36 секунд (6.06.2011 - 10:22) ИНСИ написал(а):
Нашел старый скрипт, попробуй с ним поиграть:

function sendMail($from,$subject,$text,$to) {
$mail_headers = '';
$eol = "\n";
$charset = 'utf-8';
$mail_to = $to;
$mail_from = $from;
$mail_from_ret = 'NO-REPLY@SITE.COM';

$mail_subject = "=?".$charset."?b?" . base64_encode($subject). "?=";
$mail_site_name = "=?".$charset."?b?" . base64_encode('TITLE_SITE'). "?=";
$mail_message = $text;

$mail_headers .= "MIME-Version: 1.0" . $eol;
$mail_headers .= "Content-type: text/html; charset=\"".$charset."\"" . $eol;

$mail_headers .=
'From: ' . $mail_from . $eol .
'Return-Path: <' . $mail_from_ret . '>' . $eol .
'X-Priority: 3' . $eol .
'X-Mailer: ' . $mail_site_name . $eol
;

if(!mail($mail_to, $mail_subject, $mail_message, $mail_headers)) {
return false;
}
return true;
}

sendMail('mymail@mailbox.ru', $subject, $text, 'to@mail.ru');

Спустя 7 минут, 42 секунды (6.06.2011 - 10:30) LRCenter написал(а):
velbox

Попробовал - даже без изменений в функции получается такая-же фигня. Письмо приходит - кириллица в теле и заголовке в порядке. Строка "Адрес отправителя" выглядит так: "п░п╢я─п╣я│ п╬я┌п©п╟я─п╡п╦я┌п╣п╩я▐"


sendMail('Адрес отправителя <mymail@mailbox.ru>', 'тема письма', 'тцоутаоцтуалоцу', 'mymail@mailbox.ru');

Спустя 14 минут, 38 секунд (6.06.2011 - 10:45) Игорь_Vasinsky написал(а):
а без base64? как заголовок принимается? в каком виде?

Спустя 23 минуты, 52 секунды (6.06.2011 - 11:08) LRCenter написал(а):
Да, чуваки, вы оказались правы - надо использовать base64_encode + какие-то корявые "=?utf-8?B?" и "?=". Теперь все работает прекрасно.


$headers  = "Content-type: text/plain; charset=utf-8 \r\n";
$t_from = '=?utf-8?B?'.base64_encode('Адрес отправителя').'?=';
$headers .= "From: $t_from <mymail@mailbox.ru>\r\n";
mail("mymail@mailbox.ru", "Тема письма!", "Текст \n Еще текст", $headers);


Название темы только почему-то прекрасно приходит без перекодирования. Странно. Оно ведь тоже в заголовке. :unsure:

Спустя 2 дня, 4 часа, 5 минут, 8 секунд (8.06.2011 - 15:14) LRCenter написал(а):
А вот еще вопрос, когда приходят письма с вложениями если эти вложения - картинки они сразу показывается в теле письма, это как-то можно отключить? Или это от почтового клиента зависит?

Спустя 22 часа, 15 минут, 15 секунд (9.06.2011 - 13:29) Эли4ка написал(а):
создаешь файл .htaccess и там пишешь
AddDefaultCharset utf-8

Спустя 6 часов, 14 минут, 6 секунд (9.06.2011 - 19:43) LRCenter написал(а):
Эли4ка
Спасибо за совет, тут проблема немного сложнее была smile.gif

Спустя 5 месяцев, 14 дней, 20 часов, 43 минуты, 51 секунда (24.11.2011 - 16:27) medyson написал(а):
возникла подобная проблема. письмо отсылается, но поле subject(заголовок) отображается некорректно, а именно не в той кодировке. решение, предложенное здесь мне не помогло. ниже прилагается код. возможно кто-то сталкивался с подобной проблемой?

Код:

   public function sendLetter() {

$send = new Letter();

if (isset($_POST['send'])) {

$post = new POSTv2($send);
$send = $post->getObject();

if ($send->isValid()) {

$mail = new PHPMailer();
$mail->Encoding = '8bit';
$mail->CharSet = 'utf-8';
$mail->From = $send->getFrommailletter();
$mail->IsHTML(true);
$mail->Subject = '=?utf-8?B?' . base64_encode($send->getTitleletter()) . '?=';
$mail->Subject = $send->getTitleletter();
include_once c::getPTM() . '/sendletter/view/LookletterForm.php';
$show = new LookletterForm(null, null, null, '=?UTF-8?B?' . base64_encode($send->getMessageletter()) . '?=');
$show = new LookletterForm(null, null, null, $send->getMessageletter());
$mail->Body = ($show->getContent());
$mail->AddAddress($send->getMailletter());

$mail->Send();

$this->backLetterForm();
echo 'Ваше сообщение успешно отправлено';
} else {
$errorMessageList = $send->getErrorMessageList();
if ($errorMessageList) {

foreach ($errorMessageList as $errorMessage) {
echo $errorMessage . '<br/>';
}
}
}
}
}




_____________
Меньше кода - меньше багов ©
Быстрый ответ:

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