Ошибка PHP PEAR Mail

#php #smtp #pear

#php #smtp #pear

Вопрос:

При попытке отправить электронное письмо я получаю сообщение об ошибке со следующим кодом. Это работает на моем локальном компьютере, но не тогда, когда я размещаю его на своем сервере AWS LAMP. Я не могу ничего отладить, потому что я получаю ошибку HTTP 500 при запуске скрипта. Однако я знаю, что PEAR установлен.

Код:

 require_once "Mail.php";

$from = "Email<Test@example.com>";
$to = "steve@exmaple.com";
$subject = "ERROR REPORT";
$body = "test message";

$host = "ssl://smtp.gmail.com";
$port = "465";
$username = "test@gmail.com";
$password = "pass1";

$headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject);

$smtp = Mail::factory('smtp',
array ('host' => $host,
    'port' => $port,
    'auth' => true,
    'username' => $username,
    'password' => $password));


$mail = $smtp->send($to, $headers, $body);


if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
    } else {
    echo("Error message sent!");
}
  

Похоже, что при выполнении команды send () выше происходит сбой. Есть предложения о том, как лучше это отладить?

Ответ №1:

Попробуйте следующие две строки:

 ini_set('display_errors','on');
error_reporting(E_ALL);
  

Размещение этих двух в начале скрипта обходит настройки php.ini, которые в противном случае скрывали бы ошибки. Надеюсь, это поможет!

Также, если вы можете, поместите их в вызываемый PHP-файл, а затем включите файл, который использует почтовые функции. Таким образом, вы избегаете того, чтобы приведенный выше код не работал из-за синтаксической ошибки.

Комментарии:

1. Спасибо! Это сработало. Проблема заключалась в том, что у меня не был установлен Net_SMTP

Ответ №2:

Взгляните на журнал ошибок веб-сервера, т.е. /var/log/apache2/error.log .