PHP почта висит бесконечно - как отлаживать? - PullRequest
4 голосов
/ 30 января 2012

Я настроил простую почтовую систему, которая выглядит следующим образом:

$from = 'me <me@me.com>';
$to = 'you <you@you.com>';
$subject = 'subject';
$body = 'body';

$host = 'www.me.com';
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject);

$smtp = Mail::Factory('smtp', array('host' => $host, 'auth' => true,
                      'username' => 'username', 'password' => 'password'));
$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    throw new Exception('emailException');
}

Когда я пытаюсь запустить скрипт, браузер (chrome) зависает на неопределенное время.Не выдается ни одно исключение, ни одна страница с ошибками не отображается браузером, он просто сидит и ждет ответа (более 12 минут, пока я его оставил).

Моя настоящая программа немного отличается (код заключен в функцию с информацией, передаваемой в качестве параметров).Я использовал статическую отладку и подтвердил, что передаваемые параметры являются правильными, однако он никогда не дает ошибок, поэтому я даже не могу проверить любую информацию об ошибках в $ mail.

Кто-нибудь знает, как мне поступить?отладка этого?

Обновление Я могу подтвердить зависание страницы при вызове $ smtp-> send (...)

Ответы [ 2 ]

0 голосов
/ 30 января 2012

IME, более 99% сообщений об ошибках, связанных с функциональностью почты PHP, связаны с почтой, а также с PHP и ее интерфейсом.

Почему вы пытаетесь подключиться напрямую к серверу вместо использования PHP mail ()?

У вас есть доступ к машине? Это упрощает следующее, однако вы можете сделать это из PHP.

Можно ли разрешить имя хоста сервера smtp?

Можно ли подключиться к порту 25 на SMTP-сервере?

Как реализована аутентификация? (должен быть включен в ответ на ваш EHLO )

Если у вас есть доступ к оболочке, направьте соединение через прокси-сервер регистрации или перехватите команду usnig tcpdump / wireshark и посмотрите, где соединение застревает.

Скорее всего, почтовый сервер не реализует надлежащий SMTP, и аутентификация работает неправильно.

0 голосов
/ 30 января 2012

Отладка этого может быть выполнена в лог-файлах, там вы можете найти некоторые ошибки PEAR.

Более того, вы можете отлаживать с помощью операторов echo между каждой строкой кода, чтобы вы точно знали, где он висит.

При попытке подключения к несуществующему хосту могут возникать длительные задержки.Так вот, где я бы начал искать, хотя 12 минут очень и очень долго.Вам нужно использовать класс PEAR, потому что вам нужно отправлять через назначенный SMTP-сервер?

...