winnie Опубликовано 31 Июля 2004 Жалоба Поделиться Опубликовано 31 Июля 2004 1 . по умолчанию кодировка писем стоит iso- (какая то там)2. кодировка прописывается только хтмл письмаисправляем1. кодировкуищем файл sources\classes\class_email.phpв нем строчку 54 вида var $char_set = 'iso-8859-1';меняем на var $char_set = 'KOI8-R';вместо koi8-r естественно прописать нужную вам кодировку например windows-1251 2. чтобы кодировка прописывалась и в простых текстовых письмахищем функцию function build_headers()в ней if ( $this->html_email ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-type: text/html; charset=\"".$this->char_set."\"\n"; }меняем на if ( $this->html_email ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-type: text/html; charset=\"".$this->char_set."\"\n"; }else {$this->mail_headers .= "Content-type: text/plain; charset=\"".$this->char_set."\"\n";}все Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Balancer Опубликовано 4 Августа 2004 Жалоба Поделиться Опубликовано 4 Августа 2004 При установленном mb_string и включенном overload'е, в PHP все операции с функцией mail() автоматически перекодируются из текущей системной кодировки в KOI8-R Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
winnie Опубликовано 4 Августа 2004 Автор Жалоба Поделиться Опубликовано 4 Августа 2004 просто перекодирования мало- надо чтобы строчка с кодировкой прописывалась в заголовке письма, чтобы почтовы программы могли определить автоматически кодировку Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mic2001 Опубликовано 24 Сентября 2004 Жалоба Поделиться Опубликовано 24 Сентября 2004 Господа, простите великодушно... Глючу я... Сделал все, как на духу - изменил вышеуказанный файл как дОлжно. Вот только проблему имею - на почту nm.ru, например, идет нормально, а вот на ящик с ufanet.ru приходит в виде символов Ïðîâåðêà ðóññêîãî ÿçûêà íà ôîðóìå. Причем, и на форуме при повторной отсылке появляются эти символы и сообщениеПисьмо не отправлено, в связи с тем, что Вы уже отправляли письмо в течение последних 15 минут. То есть к первому вопросу - как это может быть я хочу присовокупить еще один - где устанавливается это 15-минутное ограничение? Искренне прошу помощи, так как, видимо не очень корректно составляю запрос на поиск. А собственных сил разобраться, к сожалению, пока не хватает... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Cepera Опубликовано 24 Сентября 2004 Жалоба Поделиться Опубликовано 24 Сентября 2004 а так интервал между письмами настраивается здесьACP -> Users and Groups -> Manage User Groupsи для каждой группы свои установки Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mic2001 Опубликовано 25 Сентября 2004 Жалоба Поделиться Опубликовано 25 Сентября 2004 Со вторым вопросом проблема решена. Не могу только с первым решить проблему.Почему один сервер читает заголовки, а второй нет?Может, выложить часть листинга этого файла? Где-тоя не прав, похоже.И, главное - такая проблема не только у меня, как минимум еще на 3- форумах с движком 2.0.0 PF3 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
abram4 Опубликовано 6 Октября 2004 Жалоба Поделиться Опубликовано 6 Октября 2004 Прежде всего, спасибо winnie , теперь проблем с письмами почти нет. Одна только маленькая трабла осталась : получаю уведомление о новом приват-сообщении и вижу в своем Outlook Express 6 наполовину кривой заголовок. Лезу в хедер письма и читаю вот эдакое Subject: оПЧПЕ рТЙЧБФ-УППВЭЕОЙЕ ( From Форум *******)Content-type: text/plain; charset="windows-1251"From: "Форум *******" <admin@******>X-Mailer: IPB PHP MailerТекст уведомления и вообще все остальные письма с заголовками приходят нормально, в 1251.Помогите, плз, разобраться кто мне заголовок испохабил и как это поправить.З.Ы.Стоит 2.0.0 Final . windows-1251 прописана еще и в .htaccess . Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Iris Опубликовано 7 Октября 2004 Жалоба Поделиться Опубликовано 7 Октября 2004 Outlook Express -> настроить Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
AnGL Опубликовано 19 Октября 2004 Жалоба Поделиться Опубликовано 19 Октября 2004 Написать на e-mail Все настройки сделал, поле заголовок нормально, а сообщения в случае, если не отправлено, не в Windows-1251. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
BeS Yara Опубликовано 21 Октября 2004 Жалоба Поделиться Опубликовано 21 Октября 2004 Лезу в хедер письма и читаю вот эдакое про кодировку заголовков писем можно посмотреть тут. работало у меня на 1.2, работает у меня и на 2.0 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
abram4 Опубликовано 21 Октября 2004 Жалоба Поделиться Опубликовано 21 Октября 2004 про кодировку заголовков писем можно посмотреть тут Смотрел. Не может оно мне помочь в принципе, также как и настройка ОЕ. У меня половина заголовка кривая, потому что собран заголовок из двух кусков. Если я перенастрою что угодно, ОЕ не сможет отобразить обе половины нормально.В общем-то, решение я уже нашел. Та кривая половина, которую я в хедере вижу закопана в lang_email_content.php$lang['subject__pm_notify'] = 'оПЧПЕ рТЙЧБФ-УППВЭЕОЙЕ';заменил на $lang['subject__pm_notify'] = 'Новое Приват-сообщение'; и все исправилось. По ходу видел там еще несколько таких выражений в KOI-8, но глубоко лезть не стал, пока проблема не проявится. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
ivan26 Опубликовано 30 Октября 2004 Жалоба Поделиться Опубликовано 30 Октября 2004 Господа, проблема с кодировкой, насколько я понял, может возникать и в следствие того, что СЕРВЕР автоматически перекодирует все тексты в СВОЮ кодировку по умолчанию. Русская кодировка по умолчанию на многих серверах win1251, а в почте нам нужна koi8-r, что делать? Существует такой перекодировщик:// преобразование из Win1251 в КОИ8-Р $subject = convert_cyr_string ($subject,w,k); $message = convert_cyr_string ($message,w,k); //===============================Только вот куда бы его подставить?Проблема не надумана - простым изменением кодировки в переменной я не смог ничего изменить... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
BeS Yara Опубликовано 31 Октября 2004 Жалоба Поделиться Опубликовано 31 Октября 2004 Только вот куда бы его подставить?коротко - class_email.phpподробнее тут (с поправкой на версию - строки похожи, но не все соврадают 1 в 1) единственное "НО"(хотя не столь существенное) - Л.С.-ом рапорты с форума приходят прекодираванными в KOI8-R (форум в 1251, вся почта перекодируется в КОИ). соответственно с вариантом рассылки рапортов по e-mail все в норме . либо накосячил при конвертировании (поправил лишнее, хотя не похоже), либо при отправки рапорта он парсится как е-мэйл. на неделе попробую глянуть в чем дело и можно ли исправить . Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
addictedtobass Опубликовано 19 Января 2005 Жалоба Поделиться Опубликовано 19 Января 2005 Только что переделывал IPB 2.0.x для отсылки всех писем в кодировке KOI8-R. Предполагается что форум у нас в кодировке Windows-1251. Решение наподобие того что предлагал BeS Yara, только в более компактном виде.Итак, с самого начала. Проделываем что сказано в первом посте этой темы ($char_set ессно выбираем KOI8-R).Далее в sources\classes\class_email.php находим if ($this->temp_dump == 1) { $blah = $this->subject."\n------------\n".$this->mail_headers."\n\n".$this->message; $pathy = $this->root_path.'_mail/'.date("M-j-Y,hi-A").str_replace( '@', '+', $this->to ).".txt"; $fh = fopen ($pathy, 'w'); fputs ($fh, $blah, strlen($blah) ); fclose($fh); } else {Ниже вставляем код//----------------------------------------- //Convert headers and message to koi8-r //----------------------------------------- $this->to = convert_cyr_string ($this->to,w,k); $this->subject = convert_cyr_string ($this->subject,w,k); $this->message = convert_cyr_string ($this->message,w,k); $this->mail_headers = convert_cyr_string ($this->mail_headers,w,k);Всё, сохраняем, закрываем. Если что не так поправьте, а то я в код всего файла не очень вникал. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hottt Опубликовано 6 Апреля 2005 Жалоба Поделиться Опубликовано 6 Апреля 2005 1 . по умолчанию кодировка писем стоит iso- (какая то там)2. кодировка прописывается только хтмл письмаисправляем1. кодировкуищем файл sources\classes\class_email.phpв нем строчку 54 вида var $char_set = 'iso-8859-1';меняем на var $char_set = 'KOI8-R';вместо koi8-r естественно прописать нужную вам кодировку например windows-1251 2. чтобы кодировка прописывалась и в простых текстовых письмахищем функцию function build_headers()в ней if ( $this->html_email ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-type: text/html; charset=\"".$this->char_set."\"\n"; }меняем на if ( $this->html_email ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-type: text/html; charset=\"".$this->char_set."\"\n"; }else {$this->mail_headers .= "Content-type: text/plain; charset=\"".$this->char_set."\"\n";}все <{POST_SNAPBACK}> Сделал, как здесь сказано, теперь жду Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Kirill Опубликовано 18 Апреля 2005 Жалоба Поделиться Опубликовано 18 Апреля 2005 Проблема решена. Небольшой баг Мэта. Если вложение письма MIME одно, а не более, то кодировка, указанная в начале файла (var $char_set) по умолчанию, для контента не проставляется. РЕШЕНИЕ Редактируем sources/classes/class_email.php 1. Ищем var $char_set = 'iso-8859-1'; Заменяем на var $char_set = 'Windows-1251'; 2. Ищем //----------------------------------------- // Count.. oh you get the idea //----------------------------------------- if ( count ($this->parts) > 0 ) { if ( ! $this->html ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry; $this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"".$this->char_set."\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry; } else { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry; $this->mail_headers .= "\nContent-Type: text/html;\n\tcharset=\"".$this->char_set."\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry; } $this->mail_headers .= $this->build_multipart(); $this->message = ""; } Заменяем на: //----------------------------------------- // Count.. oh you get the idea //----------------------------------------- $content_type = $this->html ? "text/html" : "text/plain"; if ( count ($this->parts) > 0 ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry; $this->mail_headers .= "\nContent-Type: ".$content_type.";\n\tcharset=\"".$this->char_set."\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry; $this->mail_headers .= $this->build_multipart(); $this->message = ""; } else { $this->mail_headers .= "Content-Type: ".$content_type."; charset=\"".$this->char_set."\""; } Наслаждаемся нормальной работой писем. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hottt Опубликовано 15 Мая 2005 Жалоба Поделиться Опубликовано 15 Мая 2005 Предыдущее лекарство мне не помогло, надеюсь это поможет.[1116178226:1116179940]Не помогло а пользователи всё жалуются и жалуются Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Phil Опубликовано 13 Ноября 2005 Жалоба Поделиться Опубликовано 13 Ноября 2005 а как быть с версией 2.1.3 там по другому все сделано Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
fedotpuul Опубликовано 11 Декабря 2005 Жалоба Поделиться Опубликовано 11 Декабря 2005 (изменено) if ( $this->html_email ) { $this->mail_headers .= "MIME-Version: 1.0\n"; $this->mail_headers .= "Content-type: text/html; charset=\"".$this->char_set."\"\n"; }else {$this->mail_headers .= "Content-type: text/plain; charset=\"".$this->char_set."\"\n";}Код то что надо, спасибо автору БОЛЬШОЕ :-)Я хотя в php не очень врубаю, но код работает классно!!!! Изменено 11 Декабря 2005 пользователем fedotpuul Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Наблюдатель Опубликовано 12 Ноября 2006 Жалоба Поделиться Опубликовано 12 Ноября 2006 Сабжи в лангпаке прописаны в кодировке Windows-1251, но при пересылке письма они перекодируются мейлерами и в результате я получаю такую вот СРАМОТУ от крупнейшего форума (конференции) поддержки юзеров IPB: сБЕДНЛКЕМХЕ НА НРБЕРЮУ МЮ ОНДОХЯЮММСЧ РЕЛС ( IBResource.ru Forums ) Ребята, вам не стыдно рассылать такую порнуху в сабже? Тем не менее, я давно уже обошёл эту проблему найдя и переписав все сабжи конференции. У меня они прописаны в лангпаке (для IPB 2.0.0) и в файлах кода в таком виде: //------------------------------- // FORUM: WEEKLY //------------------------------- //Еженедельный обзор форума $lang['subject__digest_forum_weekly'] = "=?windows-1251?B?xebl7eXk5ev87fvpIO7h5+7wIPTu8PPs4A==?="; $lang['digest_forum_weekly'] = <<<EOF Привет! За прошедшую неделю на конференции «<#BOARD_NAME#>» в форуме "<#NAME#>" были написаны следующие сообщения: <#CONTENT#> <#BOARD_ADDRESS#>?showforum=<#FORUM_ID#> EOF; А на днях был сделан радикальный шаг, который решит И ВАШИ проблемы с вашими Windows-1251 сабжами: // ######## BY CARFAX ####### if (strpos($this->subject,"?windows-1251?")===false) { /** Тема письма в шаблоне прописана в чистом текстовом виде, а не в base64 Конвертируем... **/ // Перекодируем в base64 $this->subject = base64_encode($this->subject); // Добавляем приставки $this->subject = "=?windows-1251?B?".$this->subject."?="; } // ########################## Этот шаг сделал CARFAX по моей просьбе. Этот код идёт сразу за строкой (IPB 2.0.0 class_email.php) $this->subject = $this->clean_message($this->subject); Юзайте на здоровье. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
GiV Опубликовано 14 Ноября 2006 Жалоба Поделиться Опубликовано 14 Ноября 2006 Слишком пафосно, но все равно спасибо. Жаль, что я про это писал уже давно. Юзайте поиск, товарищь, Наблюдатель. Юзайте на здоровье. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Наблюдатель Опубликовано 14 Ноября 2006 Жалоба Поделиться Опубликовано 14 Ноября 2006 Поиск привёл в эту тему. Да и зачем (в данном случае) поиск вообще нужен - письма от вас (от конференции) просто вопиют...Если истина открылась вам давно, а всё остаётся по-прежнему... это называется "безответственность" или как-то ещё? Вписать пару строк в нужное место так сложно? Всего пару строк... Я привёл больше, но они нужны для обхода моей "влобовой" доработки. Для вас актуальны только ДВЕ. Кстати, эта доработка должна идти под номером "два", сразу после доработки чарсета и юзер В ПРИНЦИПЕ не должен искать её - она должна ему навязываться как "необходимое условие" правильной работы конференции. Я говорю о русификации движка. Почему вы ограничиваетесь только лангпаком и чарсетом? ...и о вашей компании...Согласен считаться "товарищь"-ем Верещагина. Ему, как и мне - за Россию обидно. Если уж взялись за это, то будьте любезны ИСПОЛНЯТЬ как положено (хотя бы русификацию). Я не стремлюсь вас обидеть - я правду говорю. Открыто. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
homa Опубликовано 23 Декабря 2006 Жалоба Поделиться Опубликовано 23 Декабря 2006 А кто-нибудь может подсказать, как решить проблему кодировки писем для форума 1.3.1 Final? В дистрибутиве этой версии в папке sources вообще нет директории classes. Какой файл править и как? Проблема у меня в том, что при получении писем с форума через Outlook Express в поле "От" у меня вот что: тНПСЛ ЯЮИРЮ уНПХЯР.ПС Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
RuKeeper Опубликовано 1 Мая 2007 Жалоба Поделиться Опубликовано 1 Мая 2007 как для 2.1.7 сделать? а то не выходит что-то Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Victor1 Опубликовано 24 Февраля 2008 Жалоба Поделиться Опубликовано 24 Февраля 2008 А на днях был сделан радикальный шаг, который решит И ВАШИ проблемы с вашими Windows-1251 сабжами: Код // ######## BY CARFAX ####### if (strpos($this->subject,"?windows-1251?")===false) { /** Тема письма в шаблоне прописана в чистом текстовом виде, а не в base64 Конвертируем... **/ // Перекодируем в base64 $this->subject = base64_encode($this->subject); // Добавляем приставки $this->subject = "=?windows-1251?B?".$this->subject."?="; } // ########################## Этот шаг сделал CARFAX по моей просьбе. Этот код идёт сразу за строкой (IPB 2.0.0 class_email.php) Код$this->subject = $this->clean_message($this->subject); Юзайте на здоровье. Это именно то что помогло мне исправить стандартную изначальную багу в родном движке 2.3.3. Спасибо огромное Наблюдателю! (менять надо в sources/classes/class_email.php) теперь русскоязычные темы у всех писем с форума абсолютно читабельны любыми почтовыми клиентами! Еще раз спасибо! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.