#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
.