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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кодировка писем php mail()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: крякозябры и т.д.
Alex_P
Отправлено: 07 Января, 2012 - 10:39:58
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Имеется тестовый скрипт в кодировке UTF-8:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $to      = 'тут адрес';
  3. $subject = 'TEST ТЕСТ';
  4. $message = 'hello привет';
  5. $send=mail($to, $subject, $message,"Content-type: text/plain; charset=utf-8");
  6. echo $send;
  7. ?>

Сервер IIS 7.5, на нём запущен SMTP сервер
php версии 5.3.8

Письма приходят, но с кракозябрами вместо кирилических символов:

hello привет

Исходный код письма:

CODE (htmlphp):
скопировать код в буфер обмена
  1. Received: from mxfront24.mail.yandex.net ([127.0.0.1])
  2.         by mxfront24.mail.yandex.net with LMTP id MbN0RYaf
  3.         for <alex-p89@ya.ru>; Sat, 7 Jan 2012 12:22:37 +0400
  4. Received: from unknown (unknown [ ])
  5.         by mxfront24.mail.yandex.net (nwsmtp/Yandex) with ESMTP id M66aNu9B-M668OWMb;
  6.         Sat,  7 Jan 2012 12:22:06 +0400
  7. X-Yandex-Front: mxfront24.mail.yandex.net
  8. X-Yandex-TimeMark: 1325924526
  9. X-Yandex-Spam: 1
  10. Received: from vm-alexp89-7 ([127.0.0.1]) by web.server.local with Microsoft SMTPSVC(7.5.7601.17514);
  11.          Sat, 7 Jan 2012 12:23:41 +0400
  12. Date: Sat, 07 Jan 2012 12:23:41 +0400
  13. From: reg@....ru
  14. Subject: TEST =?UTF-8?B?w5DCosOQwpXDkMKhw5DCog==?=
  15. To: тут адрес
  16. X-PHP-Originating-Script: 0:test_mail.php
  17. Content-type: text/plain; charset=utf-8
  18. MIME-Version: 1.0
  19. Content-Transfer-Encoding: BASE64
  20. Message-ID: <VM-ALEXP89-7wSA1Xvp00000019@web.server.local>
  21. X-OriginalArrivalTime: 07 Jan 2012 08:23:41.0569 (UTC) FILETIME=[A9EB7710:01CCCD15]
  22. Return-Path: reg@... .ru
  23. X-Yandex-Forward: 7b9045df7ae903c26f7f418ea5047dfa
  24.  
  25. aGVsbG8gw5DCv8ORwoDDkMK4w5DCssOQwrXDkcKC‚


Где копать на предмет кодировки? Не виноват ли в этом SMTP сервер?

(Отредактировано автором: 08 Января, 2012 - 18:15:42)

 
 Top
ugin_root
Отправлено: 31 Января, 2012 - 07:02:46
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




Content-Transfer-Encoding: BASE64 -> Content-Transfer-Encoding: 8bit
 
 Top
Alex_P
Отправлено: 31 Января, 2012 - 07:40:07
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




[quote=ugin_root][/quote]
ugin_root пишет:
Content-Transfer-Encoding: BASE64 -> Content-Transfer-Encoding: 8bit

Это не решение, приходят чуть другие кракозябры. Улыбка
 
 Top
Zuldek
Отправлено: 31 Января, 2012 - 08:01:45
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Alex_P пишет:
Не виноват ли в этом SMTP сервер?

может быть виноват и smtp сервер.
попробуйте отправить в charset=iso-8859-1
 
 Top
lays
Отправлено: 17 Июня, 2012 - 18:43:33
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2012  


Помог: 0 раз(а)




Здравствуйте! проблема аналогичная, я совсем новичок так что прошу сильно сразу не ругаться, а разъяснить как говориться на пальцах.
есть код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form action="" method="post">
  2.     Тема:  <input type="text" name="name" value="Тема"  onclick="this.value='';" onfocus="this.value='';" />    От кого: <input type="text" name="email" value=" Email"  onclick="this.value='';" onfocus="this.value='';" />    Кому: <input type="text" name="email2" value=" Email"  onclick="this.value='';" onfocus="this.value='';" />    Телефон: <input type="text" name="tel" value="Телефон"  onclick="this.value='';" onfocus="this.value='';" />    Текст: <input type="text" name="con" value="Текст"  onclick="this.value='';" onfocus="this.value='';"  />    <input type="submit"  name="submit" value="отправить" />
  3. </form>
  4.  
  5. <?php
  6. echo($_POST["name"]);echo('<br>');
  7. echo($_POST["email"]);echo('<br>');
  8. echo($_POST["email2"]);echo('<br>');
  9. echo($_POST["tel"]);echo('<br>');
  10. echo($_POST["con"]);echo('<br>');
  11. if (isset($_POST["submit"])) {
  12. $smtp_server = "mail.site.com";
  13. $port = 25;
  14. $mydomain = "site.org";
  15. $username = "";
  16. $password = "";
  17. $sender = $_POST["email"];
  18. $recipient = $_POST["email2"];
  19. $subject = $_POST["name"];
  20. $content = $_POST["con"];
  21.  
  22. // Initiate connection with the SMTP server
  23. $handle = fsockopen($smtp_server, $port);
  24. fputs($handle, "EHLO $mydomain\r\n");
  25.  
  26. // SMTP authorization
  27. fputs($handle, "AUTH LOGIN\r\n");
  28. fputs($handle, base64_encode($username)."\r\n");
  29. fputs($handle, base64_encode($password)."\r\n");
  30.  
  31. // Send out the e-mail
  32. fputs($handle, "MAIL FROM:<$sender>\r\n");
  33. fputs($handle, "RCPT TO:<$recipient>\r\n");
  34. fputs($handle, "DATA\r\n");
  35. fputs($handle, "To: $recipient\r\n");
  36. fputs($handle, "Subject: $subject\r\n");
  37. fputs($handle, "$content\r\n");
  38. fputs($handle, ".\r\n");
  39.  
  40. // Close connection to SMTP server
  41. fputs($handle, "QUIT\r\n");
  42.  
  43. }
  44. ?>

при получении сообщения русский текст который был введен в поле "текст" выглядит подобным образом "аПб€аОаВаЕб€аКаА" что делать? как быть? подскажите пожалуйста!
а еще если можно то, как в тело сообщения впихнуть и текст из поля куда номер вводят?

(Отредактировано автором: 17 Июня, 2012 - 18:45:13)

 
 Top
vpupkin97
Отправлено: 02 Ноября, 2012 - 10:10:27
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




Используйте base64_encode и указывайте кодировку.
Многие почтовые клиенты не корректно обрабатывают utf-8 (которая чаще всего используется в php скриптах). Я бы рекомендовал для этого Win-1251.
Чтобы перекодировать текст используйте iconv.

Тут есть рабочий пример: http://konservs[dot]com/post/отправка-почты-используя-php-mail-15
 
 Top
LIME
Отправлено: 02 Ноября, 2012 - 11:05:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Цитата:
Поскольку кодировка php (обычно это utf-8) и кодировка писем (обычно это windows-1251) часто отличаются, то ещё и желательно их перекодировать.
гыгыгы))
Цитата:
Кроме того, всё это должно быть в специально формате.
точнее в заголовках по протоколу должны быть только ASCII символы...потому необходимо иные кодировать в base64 или еще что-то...но большинство сервисов могут и без этого понимать кодировки
Цитата:
...а в KOI-8 нет украинских букв(«і»,«ї»,«ґ»,«є»)...

KOI8-U
 
 Top
armancho7777777 Супермодератор
Отправлено: 02 Ноября, 2012 - 11:17:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Класс для отправки почты с вложениями файлов:
Спойлер (Отобразить)


Пример:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $files = array(
  4.     '/files/image_1.jpg',
  5.     '/files/image_2.jpg',
  6.     '/files/image_3.jpg'
  7. );
  8.  
  9. $send_mail = new Send_mail();
  10.  
  11. $send_mail->email('user@mail.ru')  // Адресат (можно массив адресов)
  12.           ->from_name('Админ')  // Имя отправителя
  13.           ->from_mail('admin@mail.ru')   // Адрес отправителя
  14.           ->subject('Тема сообщения')  // Тема сообщения
  15.           ->message('Тело сообщения') // Тело сообщения
  16.           ->files($files) // Путь до прикрепляемого файла (можно массив)
  17.           ->charset('utf-8') // Кодировка (по умолчанию utf-8)
  18.           ->time_limit(30)  // set_time_limit (по умолчанию == 30с.)
  19.           ->content_type('html')  // тип сообщения (по умолчанию 'plain')
  20.           ->send(); // Отправка почты  
  21.  
  22.  


Работает корректно так же с кириллицей в названиях файлов.

(Отредактировано автором: 02 Ноября, 2012 - 11:25:20)

 
 Top
LIME
Отправлено: 02 Ноября, 2012 - 11:23:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PEAR/Mail
PEAR/Mail_Mime
 
 Top
vpupkin97
Отправлено: 30 Ноября, 2012 - 09:22:52
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




LIME пишет:
PEAR/Mail
PEAR/Mail_Mime

Зачем грузовик, если нужно перенести коробок спичек?

(Отредактировано автором: 30 Ноября, 2012 - 09:23:55)

 
 Top
avtor.fox
Отправлено: 30 Ноября, 2012 - 09:31:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




vpupkin97, а затем что бы потом не возвращаться ещё за одним коробком Ха-ха
 
 Top
LIME
Отправлено: 30 Ноября, 2012 - 10:49:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




vpupkin97 грузовики обычно уже стоят во дворе))
выбирай и пользуй
 
 Top
vpupkin97
Отправлено: 30 Ноября, 2012 - 10:59:52
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




avtor.fox пишет:
vpupkin97, а затем что бы потом не возвращаться ещё за одним коробком

LIME пишет:
vpupkin97 грузовики обычно уже стоят во дворе))
выбирай и пользуй

Ни разу не пользовался библиотеками, которые не смог разобрать "до косточек".
А PEAR/Mail+Mail_Mime, по правде говоря, я разобрать не смог или не захотел. Это не библиотека, а комбайн какой-то...

А для себя написал класс для отправки email-ов с вложениями, с перекодировкой и т.п.
Уложился в 117 строчек Хорошо.
Сколько проектов на нём сделано. Ни разу не подводил...

(Отредактировано автором: 30 Ноября, 2012 - 11:00:59)

 
 Top
LIME
Отправлено: 30 Ноября, 2012 - 11:04:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




vpupkin97 а зачем их разбирать?
на то оно и сборник готовых библиотек чтоб брать и пользовать
и не тратить время на велосипеды
в вебе чаще время разработки важнее
 
 Top
vpupkin97
Отправлено: 30 Ноября, 2012 - 11:15:33
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




LIME пишет:
vpupkin97 а зачем их разбирать?
на то оно и сборник готовых библиотек чтоб брать и пользовать
и не тратить время на велосипеды
в вебе чаще время разработки важнее

Качество важнее.
Не доверяю я всем библиотекам.
Пишешь свой код - пеняй только на себя.
Пишешь свой код - легче искать ошибки. Легче их искать в сотнях строчках, чем в тысячах а то и десятках тысяч. А если вы скажете, что есть программисты, которые пишут код без ошибок - то вы глубоко заблуждаетесь. Даже программисты NASA делают ошибки в коде.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB