Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Отправка письма в UTF-8
Форумы портала PHP.SU » PHP » Программирование на PHP » Отправка письма в UTF-8

Страниц (1): [1]
 

1. snooker - 11 Ноября, 2008 - 17:32:01 - перейти к сообщению
Я отправляю письмо скриптом на PHP в кодировке UTF-8. Прописываю в заголовке кодировку. Когда письмо приходит, то возникает проблема. Тело письма читается нормально. Но заголовок, на mail.ru, например не читается. Пишется, что без темы. Но если на латинице, то заголовок читается. Как это исправить?
2. Morgan - 11 Ноября, 2008 - 19:09:57 - перейти к сообщению
возможно тут надо отправить первый заголовок о нужной кодировке до "темы" и второй для тела письма...
(Добавление)
покажи весь код лучше
3. snooker - 11 Ноября, 2008 - 19:37:21 - перейти к сообщению
Morgan пишет:
возможно тут надо отправить первый заголовок о нужной кодировке до "темы" и второй для тела письма...
(Добавление)
покажи весь код лучше


$sm = mail("$remail",
"тема письма",
"текст письма",
"From: info@domen.ru\nReply-to: info@domen.ru\r\nContent-type: text/plain; charset=utf-8");
4. Morgan - 11 Ноября, 2008 - 19:56:05 - перейти к сообщению
вот посмотри...может поможет:

PHP:
скопировать код в буфер обмена
  1.  
  2. $subject = "Тема письма;
  3.                   $header = "From: \"Admin\" <info@domen.ru>\n";
  4.                    $header .= "Content-type: text/plain; charset=\"utf-8\"";
  5.                    $to = E-mail;
  6.                    $message = "Тело письма.";
  7.                    mail($to,$subject,$message,$header);
  8.  
5. snooker - 11 Ноября, 2008 - 20:30:46 - перейти к сообщению
[quote=Morgan]вот посмотри...может поможет:

Та же фигня. Причём странно, что в БАТЕ всё нормально. А на мэйл ру - нет....


Может можно как-то перекодировать письмо перед отправкой в виндовую кодировку? С ней таких проблем нет...
6. Morgan - 11 Ноября, 2008 - 21:06:13 - перейти к сообщению
Цитата:

Та же фигня. Причём странно, что в БАТЕ всё нормально. А на мэйл ру - нет....


Цитата:

Дело в том, что существуют почтовые программы, которые понимают заголовок Content-type, но не понимают русский текст в поле Subject, если это поле стоит до Content-type. В то же время, другие почтовые программы обязывают нас задавать Content-type последним заголовком в списке. Чтобы обойти эти препятствия, можно разместить поле Content-type сразу в начале и в конце списка заголовков:
PHP:
скопировать код в буфер обмена
  1.  
  2. $subject="Тема письма";
  3. $header="Content-type: text/plain; charset=\"windows-1251\"";
  4. $header.="From: "\Evgen"\ <evgen@mail.ru>";
  5. $header.="Subject: $subject";
  6. $header.="Content-type: text/plain; charset=\"windows-1251\"";
  7. $msg="Сторака 1\nСтрока 2\nСтрока 3";
  8. mail("name@mail.ru", $subject, $msg, $header);
  9.  



вот цитата из учебника "Решение проблемы кодировок", попробуй тоже самое только с utf-8
7. snooker - 12 Ноября, 2008 - 14:53:45 - перейти к сообщению
Morgan пишет:

вот цитата из учебника "Решение проблемы кодировок", попробуй тоже самое только с utf-8


А при таком способе отсылки он не только тему не показывает, но и от кого... Я вот думаю, может перекодирровать в виндовую кодировку перед отправлением? Только я не знаю, как это делать...
8. E-Pro - 12 Ноября, 2008 - 16:54:10 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $to = "Email куда отправлять письмо";
  2. $from = "От кого";
  3. $subject = "Тема письма";
  4.  
  5. $message = '
  6. <html>
  7.    <head>
  8.        <title>Привет</title>
  9.    </head>
  10.    <body>
  11.        Тело письма
  12.    </body>
  13. </html>';
  14.  
  15. $headers  = "Content-type: text/html; charset=windows-1251 \r\n";
  16. $headers .= "From: Чё хочешь <$from>\r\n";
  17.  
  18. mail($to, $subject, $message, $headers);


Код впринципе работает везде, нет проблем с кодировкой.
Попробуй если что меняй.
9. snooker - 12 Ноября, 2008 - 21:10:02 - перейти к сообщению
Но это даст html в письме. А я беспокоюсь, что спам-фильтры их не пропустят. Вот и хочу текст отсылать.
10. E-Pro - 12 Ноября, 2008 - 21:27:31 - перейти к сообщению
Удали html)
11. Morgan - 12 Ноября, 2008 - 21:55:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $headers  = "Content-type: text/plain; charset=windows-1251 \r\n";
  3.  
12. evgenijj - 14 Ноября, 2008 - 19:38:41 - перейти к сообщению
snooker пишет:
Я отправляю письмо скриптом на PHP в кодировке UTF-8. Прописываю в заголовке кодировку. Когда письмо приходит, то возникает проблема. Тело письма читается нормально. Но заголовок, на mail.ru, например не читается. Пишется, что без темы. Но если на латинице, то заголовок читается. Как это исправить?

Отвечу цитатой
Цитата:
электронное письмо содержит две части: в одной (верхней) размещаются заголовки, а в другой (нижней) собствено текст письма. Отделены эти части друг от друга пустой строкой. Заголовки состоят из строк, в которых содержится тема письма (Subject), имя и адрес отправителя (From), получателя (To) и другая информация. В самом простом случае каждая строка содержит пару "ИмяЗаголовка: ЗначениеЗаголовка". Особенно необходимо подчеркнуть, что, согласно стандартам, в заголовках ни при каких обстоятельствах не должны содержаться символы, не присутствующие в ASCII таблице — латинские буквы, цифры, знаки пунктуации и псевдографики.

А ты в заголовок письма пихаешь что ни попадя. Вот и результат. Подробности здесь:
Как грамотно отправлять почту из скриптов
13. Гость - 15 Ноября, 2008 - 11:17:41 - перейти к сообщению
Цитата:
Символы, не присутствующие в ASCII таблице — латинские буквы
С каких это пор из ASCII таблиц исчезли латинские буквы и цифры? Улыбка
14. snooker - 20 Ноября, 2008 - 12:58:28 - перейти к сообщению
Вообщем я проблему решил ортоганальным способом. Я сделал файл отправки в виндовой кодировке и отправляю заголовок и текст в ней же. Так работает. А с UTF-8 так и не зработало...
(Добавление)
evgenijj пишет:
Как грамотно отправлять почту из скриптов


Эта ссылка не работает.
15. untbox - 09 Сентября, 2014 - 16:14:43 - перейти к сообщению
Morgan пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $headers  = "Content-type: text/plain; charset=windows-1251 \r\n";
  3.  



Есть скрипт. Вопрос: как добавить кодировку UTF-8?

<?
if($_POST['name']){
$znach = array(
1 => $_POST['name'],
2 => $_POST['phone'],
3 => $_POST['web'],
);
mail("mail@gmail.com", "Заявка c ".$_SERVER['HTTP_REFERER'], $znach[2]." ".$znach[1], $znach[3]);
}
Header("Refresh: 4; URL=".$_SERVER['HTTP_REFERER']);
?>

 

Powered by ExBB FM 1.0 RC1