Отладка PHP Mail () и / или PHPMailer - PullRequest
24 голосов
/ 24 мая 2010

Я застрял с проблемой отправки почты из сценария PHP. Некоторые данные:

  • Общий хостинг, нет доступа по SSH, только панель хостинг-провайдера
  • PHP версия 5.2.5
  • В прошлом году я создал сайт, у которого не было проблем с отправкой почты на тот же хостинг
  • Скажем, домен - «domain.com», а мой личный адрес - «myaddress@mydomain.com», для обеспечения анонимности в следующем коде.

Вот код:

<?php
error_reporting(E_ALL); 
ini_set("display_errors", 1);

$to = "myaddress@mydomain.com";
$subject = "Hi";
$body = "Test 1\nTest 2\nTest 3";
$headers = 'From: info@domain.com' . "\r\n" .
    'errors-to: myaddress@mydomain.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

if (mail($to, $subject, $body, $headers)) {
    echo("Message successfully sent");
} else {
    echo("Message sending failed");
}

require('class.phpmailer.php');
$message = "Hello world";
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->AddAddress("myaddress@mydomain.com", "Agos");
$mail->SetFrom("info@domain.com","My Site");
$mail->Subject = "Test Message";
$mail->Body = $message;
$mail->Send();
?>

А вот что я получаю:

Не удалось отправить сообщение Не удалось создать экземпляр почтовой функции.

Что сбивает с толку, если не сказать больше. Могу ли я что-нибудь сделать, чтобы получить хотя бы несколько более значимых ошибок? Почему код из класса отображается в моем файле?

1 Ответ

40 голосов
/ 24 мая 2010

Похоже, файл class.phpmailer.php поврежден.Я бы скачал последнюю версию и попробовал бы снова.

Я всегда использовал функцию SMTP в phpMailer:

$mail->IsSMTP();
$mail->Host = "localhost";

А если вам нужна информация для отладки:

$mail->SMTPDebug  = 2; // enables SMTP debug information (for testing)
                       // 1 = errors and messages
                       // 2 = messages only
...