Ошибка при отправке почты в POSTACI WEBMAIL 2-й версии |
Написал Ярослав Гасов | |
03.03.2007 | |
В POSTACI 2.0.0 (а может и в более новых версиях) существует серъезная ошибка, из-за которой исходящая почта при попытке ее отправить просто "исчезает".
Связанна эта проблема с неграмотным подходом к написанию кода в подключаемом скрипте "classes\mime_mail.inc" и "includes\functions.inc". Обратите внимание на следующую функцию из "functions.inc":
function getMailAdress($user_id) { В этой функции к адресу отправителя добавляется (выделено полужирным) имя почтового ящика ($real_name), которое задает сам пользователь, например: "Отдел реализации". Далее обратим внимание на отправку почты (postmail.php и mime_mail.inc):
... $mail->from = getMailAdressPlaine($user_id); // postmail.php ...
if ($smtp_host != "localhost") { // mime_mail.inc $fp = fsockopen($smtp_host,$smtp_port); ... fputs($fp, "mail from:<" . $this->from . ">\r\n"); ...
Т.е., если Вы в настройках указали IP-адрес SMTP-сервера вместо "localhost" (например, чтобы POSTACI не использовал стандартную функцию "mail"), то по протоколу SMTP (а не в теле письма, ради чего собственно и должно использоваться $real_name) будет попытка передать кириллицу в имени отправителя, что для почтовой службы недопустимо. Вследствие этого письмо никуда не отправиться.
Для решения данной проблемы самое простое, что можно посоветовать - это убрать строчку $mailadress = $real_name . " <" . $mailadress . ">"; из функции getMailAdress. Более сложный путь: дублирование данной функции (getMailAdressWOrealname) без данной строки и добавление в классе "mime_mail" (файл mime_mail.inc) переменной $this->fromplaine = "". Затем следует подправить "postmail.inc":
$mailadress = getMailAdress($user_id);
Также следует заменить следующую строку "отправки"письма в "mime_mail.inc":
fputs($fp, "mail from:<" . $this->from . ">\r\n") меняем на fputs($fp, "mail from:<" . $this->fromplaine . ">\r\n").
Более сложный путь позволить получателю в самом теле письма увидеть красиво оформленный адрес отправителя, как и задумывалось создателями POSTACI. |