Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с кодировкой при отправке email c HTML 
:(
    Опции темы
kolombo1
Дата 10.8.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 15.7.2009

Репутация: нет
Всего: нет



Написал код для отправки email с вложением - картинкой:
Код

    $html = '<html>' . $_POST['html'] . '</html>';
    $crlf = "\r\n"; 
    $hdrs = array( 
                  'From'    => '[email protected]', 
                  'Subject' => 'Тема'
                  ); 

    $mime = new Mail_mime($crlf);

    $mime->addHTMLImage ($_POST['personal_photo'], $_FILES['personal_photo']['type']); 
    $mime->setHTMLBody($html); 

    $body = $mime->get(); 
    $hdrs = $mime->headers($hdrs); 


    $mail =& Mail::factory('mail'); 
    $mail->send('[email protected]', $hdrs, $body);

Раньше всё работало нормально. Может, я случайно что-то изменил (редактируя другую часть кода на этой странице), а может и нет, но недавно вместо нормально сообщений стали присылаеться сообщения с закорлючками вместо руского текста, например такими: Ñ‚ÐµÐºÑ Ñ‚. Что не так? Почему это могло произойти?

P.S. base64encode() и unicode_encode() пробовал
PM MAIL   Вверх
Ипатьев
Дата 10.8.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Вообще, в письме всегда надо указывать кодировку. Отдельно для текста и отдельно для темы.
В приведенном коде я указания кодировки не вижу.
PM MAIL   Вверх
kolombo1
Дата 10.8.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 15.7.2009

Репутация: нет
Всего: нет



Код

 $hdrs = array( 
                  'From'    => '[email protected]', 
                  'Subject' => 'Тема',
                  'Content-type' => 'text/html; charset=utf-8'
                  ); 


Так тоже не работает. Даже когда меняю utf-8 на windows-1251.
PM MAIL   Вверх
Ипатьев
Дата 10.8.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Ну, во-первых, "даже менять" как раз и не стоило. Зачем указывать для текста в utf-8 кодировку windows-1251?
Во-вторых, в мультипарт сообщении следует указывать кодировку для каждой части. 
Я думаю, проще всего посмотреть в документации к используемой библиотеке, как там задается кодировка.
PM MAIL   Вверх
kolombo1
Дата 10.8.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 15.7.2009

Репутация: нет
Всего: нет



Вроде нашёл, как это делается, но не работает:
Код

    $random_hash = md5(date('r', time()));
    $hdrs = array( 
                  'From'    => '[email protected]', 
                  'Subject' => 'Тема',
                  'Content-Type' => 'multipart/mixed; boundary="PHP-mixed-' . $random_hash . '"'
                  ); 


Это сообщение отредактировал(а) kolombo1 - 10.8.2009, 16:49
PM MAIL   Вверх
Ипатьев
Дата 10.8.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



А это-то здесь при чем?
Во-первых, этот заголовок не имеет отношения к проблеме.
Во-вторых, такое влезание в заголовки в худшем случае приведет к нечитаемости письма, а в лучшем - просто не будет иметь никакого эффекта. Boundary данная библиотека гарантированно выставляет сама. 
А в третьих, я не понимаю, зачем вообще руками влезать в заголовки письма, если библиотека наверняка поставляет API?
Я думаю, никакие $hdrs не стоит указывать вообще, а задавать все параметры функциями, подобными $mime->setHTMLBody
В том числе и кодировку. 
PM MAIL   Вверх
kolombo1
Дата 10.8.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 15.7.2009

Репутация: нет
Всего: нет



А где можно почитать про эти функции?
PM MAIL   Вверх
Ипатьев
Дата 10.8.2009, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Ну я-то откуда знаю? Там же, откуда брались функции  Mail_mime, addHTMLImage, Mail::factory...
Судя по коду - это вызовы какой-то готовой библиотеки. Наверняка у нее есть какой-то сайт и описание. 

http://pear.php.net/manual/ru/package.mail.mail-mime.get.php
Находится гуглем за две минуты. Не сложнее, чем "написать код" из пары вызовов готовых функций.

PM MAIL   Вверх
mogul82
Дата 11.8.2009, 13:33 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 20.11.2008

Репутация: -1
Всего: -5



Если IMAP то вот щас нашел.

функция imap_utf8
PM MAIL   Вверх
jone31
  Дата 12.8.2009, 00:01 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



была такая же проблемма, решилась когда я поставил кодировку CP1251 или CP-1251. точно не помню.
вообщем попробуй так: 'Content-type' => 'text/plain; charset=cp1251'

Это сообщение отредактировал(а) jone31 - 12.8.2009, 00:03
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.