Помогите кто может!!!
Форум на сайте работает уже около года. До 30.09.11г. проблем не было.
После 30.09 пользователи начали жаловаться, что не могут прочитать письма, генерируемые с форума, в том числе и вновь регистрирующиеся пользователи (приходит письмо с логином и паролем, а прочитать не могут). Причем по тексту письма читаются все ссылки и текст на латыни, а вот русский - нечитаем (либо пусто, либо пробелы/тире).
Попробовал внести изменения из этого топика:
http://exbb.info/community/topic...=6&topic=411
после чего заголовок письма стал читаем, а вот само письмо - без изменений.
Понятно, что дело в кодировке. Но вопросы к админам хостинга (хостинг платный) ничего не дали. Говорят, изменений на хостинге не было, а консультаций по написанию кода они естественно не дают. Но ведь год все работало нормально!
Очень надеюсь, что кто то здесь сможет помочь с этой проблемой.
1. jon45 - 5 октября 2011 — 07:09 - перейти к сообщению
2. CAB - 5 октября 2011 — 08:19 - перейти к сообщению
Шаблоны писем находятся где-то в файлах форума. Вспомните, что Вы редактировали из файлов между тем как было всё нормально и как стало неправильно. У этих файлов проверьте кодировку. Должна быть windows. Если файл не вспомните, то проверьте все.
3. jon45 - 5 октября 2011 — 09:02 - перейти к сообщению
CAB
В том то и дело, что НИЧЕГО НЕ КОРРЕКТИРОВАЛОСЬ. Проблема всплыла неожиданно. Судя по сообщениям Google Adsense - как раз 30.09.11 некоторое время не было доступа к хостингу (соответственно сайту и форуму). Предполагаю, что проводились какие то работы на хостинге, после которых и возникла данная проблема с кодировкой. Но админы с хостинга не признаются. Файлы сравнивал с резервной копией (рабочей) - изменений в них нет.
В том то и дело, что НИЧЕГО НЕ КОРРЕКТИРОВАЛОСЬ. Проблема всплыла неожиданно. Судя по сообщениям Google Adsense - как раз 30.09.11 некоторое время не было доступа к хостингу (соответственно сайту и форуму). Предполагаю, что проводились какие то работы на хостинге, после которых и возникла данная проблема с кодировкой. Но админы с хостинга не признаются. Файлы сравнивал с резервной копией (рабочей) - изменений в них нет.
4. CAB - 5 октября 2011 — 09:36 - перейти к сообщению
jon45 пишет:
Я имел ввиду не содержание файлов, а кодировку самих файлов. Они могли быть перекодированы без изменения содержания.Файлы сравнивал с резервной копией (рабочей) - изменений в них нет.
+ появилась мысль, что может быть изменилась кодировка отправляемых писем на хостинге. Попробуйте посмотреть в приходящих письмах сейчас и в старых, правильных, какая кодировка. Если разная, то тогда искать надо в этом направлении.
5. jon45 - 5 октября 2011 — 10:11 - перейти к сообщению
CAB пишет:
Я имел ввиду не содержание файлов, а кодировку самих файлов. Они могли быть перекодированы без изменения содержания.
+ появилась мысль, что может быть изменилась кодировка отправляемых писем на хостинге. Попробуйте посмотреть в приходящих письмах сейчас и в старых, правильных, какая кодировка. Если разная, то тогда искать надо в этом направлении.
+ появилась мысль, что может быть изменилась кодировка отправляемых писем на хостинге. Попробуйте посмотреть в приходящих письмах сейчас и в старых, правильных, какая кодировка. Если разная, то тогда искать надо в этом направлении.
Все таки, думаю, дело не в этом. Были изменены настройки на хостинге, которые влияют на работу скрипта отправки почты.
Сразу после возникновения проблемы письма приходили БЕЗ заголовка и БЕЗ текста внутри письма. Т.Е. не отображался текст кириллический. После внесения изменений (по топику в первом сообщении), которые сводятся к добавлению в функцию файла include/fm.class.php строк:
CODE:
$send_charset = "windows-1251";
$list[0]='=?' . $send_charset . '?B?' . base64_encode($list[0]) . '?=';
$list[3]='=?' . $send_charset . '?B?' . base64_encode($list[3]) . '?=';
$list[0]='=?' . $send_charset . '?B?' . base64_encode($list[0]) . '?=';
$list[3]='=?' . $send_charset . '?B?' . base64_encode($list[3]) . '?=';
ЗАГОЛОВОК ПИСЬМА стал приходить как положено (русский текст виден).
Но в вышеприведенной теме вопрос решен именно по заголовку.
Мне же необходимо сделать то же с текстом внутри письма.
6. BON - 5 октября 2011 — 11:07 - перейти к сообщению
так посмотрите файлы которые формируют тело письма, наверняка там есть кодировка, или возможно само тело писами сохранено не в 1251.
7. jon45 - 6 октября 2011 — 01:31 - перейти к сообщению
А нельзя применить для тела письма ту же конструкцию, что и для заголовка?
Сдается мне, что если это сделать, проблема решится. Кто подскажет КАК?
В каких файлах копать?
Сейчас email функции в файле fm.class.php выглядят так:
CODE:
$send_charset = "windows-1251";
$list[0]='=?' . $send_charset . '?B?' . base64_encode($list[0]) . '?=';
$list[3]='=?' . $send_charset . '?B?' . base64_encode($list[3]) . '?=';
$list[0]='=?' . $send_charset . '?B?' . base64_encode($list[0]) . '?=';
$list[3]='=?' . $send_charset . '?B?' . base64_encode($list[3]) . '?=';
Сдается мне, что если это сделать, проблема решится. Кто подскажет КАК?
В каких файлах копать?
Сейчас email функции в файле fm.class.php выглядят так:
CODE:
/*
_Mail Основная функция которая определяет как отправлять письма
*/
function _Mail() {
$this->_SendMail(func_get_args());
}
/*
_SendMail функция отправки e-mail через sendmail сервера
*/
function _SendMail($list) {
$send_charset = "windows-1251";
$list[0]='=?' . $send_charset . '?B?' . base64_encode($list[0]) . '?=';
$list[3]='=?' . $send_charset . '?B?' . base64_encode($list[3]) . '?=';
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
$headers .= 'Reply-To: '.$list[1]."\n";
$headers .= 'Return-Path: '.$list[1]."\n";
$headers .= "MIME-Version: 1.0\nContent-type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s', time()) . " UT\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\n";
$skip_mails = (file_exists(FM_SKIP_MAILS)) ? file(FM_SKIP_MAILS):array();
if (count($skip_mails) !== 0) {
unset($skip_mails[0]);
$skip_mails = preg_replace("#(\r\n|\|$)#","",trim(implode("|",$skip_mails)));
} else {
$skip_mails = "@";
}
$users = $this->_Read(FM_USERS);
if (is_array($list[2])) {
@set_time_limit(360);
foreach ($list[2] as $user_id => $flag) {
if (isset($users[$user_id]) && !preg_match("#(".$skip_mails.")$#is",$users[$user_id]['m'])) {
mail($users[$user_id]['m'], $list[3], $list[4], $headers);
}
}
} else {
if (!preg_match("#(".$skip_mails.")$#is",$list[2])) {
mail($list[2], $list[3], $list[4], $headers);
}
}
}
_Mail Основная функция которая определяет как отправлять письма
*/
function _Mail() {
$this->_SendMail(func_get_args());
}
/*
_SendMail функция отправки e-mail через sendmail сервера
*/
function _SendMail($list) {
$send_charset = "windows-1251";
$list[0]='=?' . $send_charset . '?B?' . base64_encode($list[0]) . '?=';
$list[3]='=?' . $send_charset . '?B?' . base64_encode($list[3]) . '?=';
$headers = 'From: '.$list[0].' <'.$list[1].">\n";
$headers .= 'Reply-To: '.$list[1]."\n";
$headers .= 'Return-Path: '.$list[1]."\n";
$headers .= "MIME-Version: 1.0\nContent-type: text/plain; charset=windows-1251\nContent-Transfer-Encoding: 8bit\nDate: " . gmdate('D, d M Y H:i:s', time()) . " UT\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\n";
$skip_mails = (file_exists(FM_SKIP_MAILS)) ? file(FM_SKIP_MAILS):array();
if (count($skip_mails) !== 0) {
unset($skip_mails[0]);
$skip_mails = preg_replace("#(\r\n|\|$)#","",trim(implode("|",$skip_mails)));
} else {
$skip_mails = "@";
}
$users = $this->_Read(FM_USERS);
if (is_array($list[2])) {
@set_time_limit(360);
foreach ($list[2] as $user_id => $flag) {
if (isset($users[$user_id]) && !preg_match("#(".$skip_mails.")$#is",$users[$user_id]['m'])) {
mail($users[$user_id]['m'], $list[3], $list[4], $headers);
}
}
} else {
if (!preg_match("#(".$skip_mails.")$#is",$list[2])) {
mail($list[2], $list[3], $list[4], $headers);
}
}
}
8. jon45 - 7 октября 2011 — 02:55 - перейти к сообщению
Никто не подскажет решение? ![Что такое? Что такое?](./im/emoticons/what2.gif)
А за вознаграждение???
![Что такое? Что такое?](./im/emoticons/what2.gif)
А за вознаграждение???
9. BON - 7 октября 2011 — 15:31 - перейти к сообщению
само тело которое формирует письмо находится в фаиле lang_front_register.php
/
но оно походу вам ничего не даст. А вообще напишите хостеру для начала
/
Смотреть (Отобразить)
но оно походу вам ничего не даст. А вообще напишите хостеру для начала
10. jon45 - 8 октября 2011 — 04:45 - перейти к сообщению
BON пишет:
А вообще напишите хостеру для начала
Писал уже... Два раза. Отмахнулись от меня и все: "на хостинге ничего не меняли", "консультации по коду не оказываем"... Хостин на 101domain.com
Да-а-а-а... Тяжела и неказиста жизнь простого программиста...
Пока пришлось выставить в админке "Пользователь может сам задавать себе пароль", иначе даже регистрироваться никто не может.
Пока решения не нашел. К сожалению.
![Огорчение Огорчение](./im/emoticons/trouble.gif)
11. BON - 8 октября 2011 — 07:38 - перейти к сообщению
так поменяйте хостинг и всё
12. Jul - 8 октября 2011 — 20:53 - перейти к сообщению
Аналогичная проблема и тоже хостинг на 101domain.com. Не знаю что делать, перепробовал уже кучу вариантов. Видимо надо доставать хостера! Отпишитесь пожалуйста если у вас что-то решится.
13. tester - 9 октября 2011 — 09:00 - перейти к сообщению
только что на тестовом форуме зарегился - все прекрасно приходит : http://styles.exbb.info/final/to...50603#1318150603
14. BON - 9 октября 2011 — 09:05 - перейти к сообщению
Народ, скрипт у всех одинаковый, это у вас проблема сх остингом. Либо меняйте, либо хорошо трусите хостера.
15. fOcs - 9 октября 2011 — 10:26 - перейти к сообщению
у меня на тестовом пришли каракули