2010-05-24 15 views
22

Utknąłem z problemem wysyłania wiadomości ze skryptu PHP. Niektóre dane:Debugowanie PHP Mail() i/lub PHPMailer

  • Shared hosting, bez dostępu SSH, tylko gospodarzem panelu operatora
  • wersja PHP 5.2.5
  • ubiegłym roku wybudowany teren, który nie miał problemów z wysyłaniem poczty z tym samym gospodarzem
  • Załóżmy, że domena to "domena.com", a mój prywatny adres to "[email protected]" ze względu na anonimowość w poniższym kodzie.

Oto kod:

<?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(); 
?> 

A oto co mam:

Message sending failed Could not instantiate mail function.

Która jest zaskakujący do powiedzenia najmniej. Czy jest coś, co mogę zrobić, aby uzyskać co najmniej bardziej znaczące błędy? Dlaczego kod z klasy pojawia się w moim pliku?

+0

Fatal error: Class 'PHPMailer' nie znaleziono w /mailtest.php na linii 20 ? co jest w linii 20? –

+0

@Mihai linia 20 to $ mail = new PHPMailer(); – Agos

Odpowiedz

37

Wygląda na to, że plik class.phpmailer.php jest uszkodzony. Chciałbym pobrać the latest version i spróbować ponownie.

Zawsze stosować PHPMailer wyposażone SMTP:

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

A jeśli potrzebujesz informacji diagnostycznych:

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

wszystko się udało. dzięki! – Agos