2010-05-24 7 views
22

У меня возникла проблема с отправкой почты из скрипта PHP. Некоторые данные:Отладка PHP Mail() и/или PHPMailer

  • Shared не хостинг, нет доступа SSH, только хостинг панели провайдера
  • PHP версия 5.2.5
  • В прошлом году я построил сайт, который не имел никаких проблем отправки почты с тем же хостинг
  • Предположим, что домен является «domain.com», а мой личный адрес - «[email protected]» для анонимности в следующем коде.

Вот код:

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

$to = "[email protected]"; 
$subject = "Hi"; 
$body = "Test 1\nTest 2\nTest 3"; 
$headers = 'From: [email protected]' . "\r\n" . 
    'errors-to: [email protected]' . "\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("[email protected]", "Agos"); 
$mail->SetFrom("[email protected]","My Site"); 
$mail->Subject = "Test Message"; 
$mail->Body = $message; 
$mail->Send(); 
?> 

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

Message sending failed Could not instantiate mail function.

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

+0

Фатальная ошибка: Class 'PHPMailer' не найден в /mailtest.php на линии 20 ? что на линии 20? –

+0

@ Mihai line 20 - $ mail = new PHPMailer(); – Agos

ответ

37

Похоже, файл class.phpmailer.php поврежден. Я бы загрузил the latest version и повторил попытку.

Я всегда использовал PHPMailer в SMTP особенность:

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

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

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

все сработало. благодаря! – Agos