vedy
Новичок
php as CGI + mail + "550: No such user" = "malformed header from script..."
Впервые столкнулась с такой проблемой.
PHP установлен как CGI ( phpinfo )
На сайте стоит phpbb со встроенным майлером, который банально использует php-функцию mail, для отправки писем.
При попытке отправить письмо, если адрес не существует, мыльный сервер шлёт отлуп (550 или какой другой, в зависимости от причины невозможности доставки письма).
И sendmail или CGI-обработчик выдаёт отлуп прямо в поток вывода скрипта.
В результате чего, отлуп летит клиенту ДО отправки заголовков.
Ессно, сервер не может этого допустить и получаем "500 Internal Server Error", а в error-логе сервера: "malformed header from script. Bad [email protected]... No such user he: /home/ubiz.ru/php-bin/php".
Пример 1, работающий за счёт того, что до вызова функции mail, идёт вывод html-кода, значит, заголовки уже отправлены:
_______________________________________________________________________________
_______________________________________________________________________________
Результат работы примера 1 - попытка отправить письмо на несуществующий "[email protected]":
_______________________________________________________________________________
_______________________________________________________________________________
Здесь "[email protected]... No such user here" - отлуп mail-сервера, который каким-то образом попадает прямо в вывод скрипта.
Пример 2, с результатом "500 Internal Server Error", как в PHPBB:
_______________________________________________________________________________
_______________________________________________________________________________
Попытка вставить ob_start() до вызова ф-ции mail ничего не дала.
Вопрос: как перехватить ошибку (отлуп майл-сервера) в данном случае и не допустить её выброс до отправки заголовков скрипта?
-~{}~ 13.12.07 08:26:
ээх, трудный оказался вопрос для здешней коммьюнити :-\
неужели нито не сталкивался?
Впервые столкнулась с такой проблемой.
PHP установлен как CGI ( phpinfo )
На сайте стоит phpbb со встроенным майлером, который банально использует php-функцию mail, для отправки писем.
PHP:
$result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
И sendmail или CGI-обработчик выдаёт отлуп прямо в поток вывода скрипта.
В результате чего, отлуп летит клиенту ДО отправки заголовков.
Ессно, сервер не может этого допустить и получаем "500 Internal Server Error", а в error-логе сервера: "malformed header from script. Bad [email protected]... No such user he: /home/ubiz.ru/php-bin/php".
Пример 1, работающий за счёт того, что до вызова функции mail, идёт вывод html-кода, значит, заголовки уже отправлены:
_______________________________________________________________________________
PHP:
<form method=post><input name="addr" /></form>
<?php
if(isset($_POST['addr']) && !empty($_POST['addr'])) {
$result = @mail(urldecode($_POST['addr']), "mail test email", "mail test email");
if (!$result)
{
die(__LINE__.':'.__FILE__.' :: Failed sending email :: ');
}
}
?>
Результат работы примера 1 - попытка отправить письмо на несуществующий "[email protected]":
_______________________________________________________________________________
PHP:
(_________ input поле)
[email][email protected][/email]... No such user here 8:/home/ubiz.ru/htdocs/z.php :: Failed sending email ::
Здесь "[email protected]... No such user here" - отлуп mail-сервера, который каким-то образом попадает прямо в вывод скрипта.
Пример 2, с результатом "500 Internal Server Error", как в PHPBB:
_______________________________________________________________________________
PHP:
<?php
if(isset($_POST['addr']) && !empty($_POST['addr'])) {
$result = @mail(urldecode($_POST['addr']), "mail test email", "mail test email");
if (!$result)
{
die(__LINE__.':'.__FILE__.' :: Failed sending email :: ');
}
}
?>
<form method=post><input name="addr" /></form>
Попытка вставить ob_start() до вызова ф-ции mail ничего не дала.
Вопрос: как перехватить ошибку (отлуп майл-сервера) в данном случае и не допустить её выброс до отправки заголовков скрипта?
-~{}~ 13.12.07 08:26:
ээх, трудный оказался вопрос для здешней коммьюнити :-\
неужели нито не сталкивался?