В POSTACI 2.0.0 (а может и в более новых версиях) существует серъезная ошибка, из-за которой исходящая почта при попытке ее отправить просто "исчезает".
Связанна эта проблема с неграмотным подходом к написанию кода в подключаемом скрипте "classes\mime_mail.inc" и "includes\functions.inc". Обратите внимание на следующую функцию из "functions.inc": function getMailAdress($user_id) { global $db,$qmail_support;
$dbq = $db->execute("select username,domain_id,real_name from tblUsers where user_id=$user_id"); $username = $dbq->fields['username']; $domain_id = $dbq->fields['domain_id']; $real_name = $dbq->fields['real_name']; $dbq->close(); $dbq = $db->execute("select domain from tblDomains where domain_id=$domain_id"); $domain = $dbq->fields['domain']; $dbq->close();
$mailadress = trim($username);
if (trim($real_name) != "") { $mailadress = $real_name . " <" . $mailadress . ">"; }
return $mailadress; } // end function
В этой функции к адресу отправителя добавляется (выделено полужирным) имя почтового ящика ($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); $mail = new mime_mail; $mail->fromplaine = getMailAdressWOrealname($user_id); $mail->from = $mailadress; Также следует заменить следующую строку "отправки"письма в "mime_mail.inc": fputs($fp, "mail from:<" . $this->from . ">\r\n") меняем на fputs($fp, "mail from:<" . $this->fromplaine . ">\r\n"). Более сложный путь позволить получателю в самом теле письма увидеть красиво оформленный адрес отправителя, как и задумывалось создателями POSTACI. |