web-dev-qa-db-fra.com

Débogage PHP Mail () et / ou PHPMailer

Je suis assez coincé avec un problème d'envoi de courrier à partir d'un script PHP. Certaines données:

  • Hébergement partagé, pas d'accès SSH, uniquement le panneau du fournisseur d'hébergement
  • PHP version 5.2.5
  • L'année dernière, j'ai construit un site qui n'a eu aucun problème pour envoyer du courrier avec le même hébergement
  • Disons que le domaine est "domain.com" et mon adresse privée est "[email protected]" pour des raisons d'anonymat dans le code suivant.

Voici le code:

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

Et voici ce que j'obtiens:

Échec de l'envoi du message Impossible d'instancier la fonction de messagerie.

Ce qui est pour le moins déroutant. Puis-je faire quelque chose pour obtenir au moins quelques erreurs plus significatives? Pourquoi le code de la classe apparaît-il dans mon fichier?

26
Agos

Il semble que le fichier class.phpmailer.php soit corrompu. Je téléchargerais la dernière version et réessayer.

J'ai toujours utilisé la fonction SMTP de phpMailer:

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

Et si vous avez besoin d'informations de débogage:

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