PHPMailer charge un certain temps, puis donne 500 - erreur Interne du serveur

J'essaye de configurer une page php pour envoyer automatiquement un email de vérification. Je voudrais utiliser le smtp de gmail serveurs, et partout où j'ai regardé suggère d'utiliser des PHPMailer. Je l'ai installé et utilisé l'exemple de code suivant:

ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once ("incl\PHPMailer\PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = "[email protected]";
$mail->Password = "mypassword";
$mail->SetFrom('[email protected]','Me');
$mail->AddAddress("[email protected]");
$mail->Subject = "Verify your email";
$mail->Body = "Thank you for signing up.  Please verify your email using the link below:";
$mail->IsHTML (true);
if($mail->Send()){
echo "Success";
}else{
echo "Error";
}

Lorsque vous essayez d'accéder à la page via Firefox, la page charge pendant quelques minutes, puis lui donne cette erreur:

500 - erreur Interne du serveur.
Il y a un problème avec la ressource que vous recherchez, et il ne peut pas être affichée.

Le serveur est Windows Server 2008 R2 Standard cours d'exécution IIS 7.5 et PHP Version 5.5.8. Je peux accéder à toutes les autres pages sans problèmes, mais en essayant d'appeler $mail->Send() semble être le chronométrage ou de quelque chose. Je le sais parce que j'ai commenté chaque ligne et lentement ajouté morceaux et $mail->Send() est la ligne qui provoque le comportement.

Mon Google capacités d'échec de moi ici comme je ne peut tout simplement pas comprendre comment faire ce travail. Toutes les idées sur ce qui pourrait être mauvais?

Mise à jour

J'ai ouvert le journal du serveur, puis a tenté de chargement de la page, mais pas de nouvelles erreurs ont été ajoutées au journal. Cependant, j'ai remarqué les erreurs suivantes à partir d'aujourd'hui dans System32\LogFiles\httperr1.log

2014-10-27 06:29:21 1.161.23.122 3148 212.83.145.123 80 HTTP/1.0 CONNECT mx2.mail2000.com.tw:25 400 - URL -  
2014-10-27 10:10:12 95.183.244.244 33553 212.83.145.123 80 HTTP/1.1 GET / 400 - Hostname -
2014-10-27 11:25:25 207.38.185.197 51157 212.83.145.123 80 HTTP/1.1 GET /tmUnblock.cgi 400 - Hostname -
2014-10-27 12:46:21 1.168.221.158 7952 212.83.145.123 80 - - - - - Timer_ConnectionIdle -

Mise à JOUR 2

Je suis positive qui mon compte gmail détails sont corrects et ont testé l'envoi de l'aide de Thunderbird sur le serveur. Lorsque vous essayez d'envoyer sans sécurisé méthodes, comme suggéré dans ce commentaire, j'obtiens cette erreur:

MAIL DE commande a échoué,550,5.7.3 action Requise abandonnée; l'utilisateur n'est pas authentifié

Mon PHP Mailer version 5.2.9 et maintenant j'ai aussi essayé le suivant:

  • À l'aide de \\ dans les chemins de fichiers au lieu de \
    • Pas de changement
  • Y compris class.phpmailer.php au lieu de PHPMailerAutoload.php
    • Fatal error: Class 'SMTP' not found in C:\inetpub\wwwroot\incl\PHPMailer\class.phpmailer.php on line 1195
  • L'utilisation de ssl sur le port 465
    • SMTP connect() failed
  • Envoi à une adresse hotmail sur le port 25 avec $mail->SMTPAuth = false;
    • MAIL FROM command failed,550,5.7.3 Requested action aborted; user not authenticated

Mise à jour 3

Après rechargement de la page de problème, j'ai vérifié dans l'Observateur d'Événements et a vu une nouvelle entrée dans Journaux Windows -> Système:

PHP Error : syntax error, unexpected BOOL_TRUE dans C:\PHP\php.ini sur la ligne 101

Que la ligne est:

php_flag display_errors sur

L'erreur 500 est dénuée de sens par lui-même. Vous devriez trouver un message d'erreur significatif dans vos journaux de serveur web. Soit ça, ou un ensemble display_errors à true dans votre script ou php.ini pour le rendre visible. Ce n'est pas spécifique à PHPMailer - c'est vrai pour n'importe quelle erreur fatale de PHP.
J'ai essayé d'ajouter ini_set('display_errors', 1); en haut du script, mais il ne modifie pas la sortie. Mise à jour de la question avec certains détails dans le fichier journal.
Si vous êtes témoins de 500 erreurs dans votre navigateur, mais rien n'est connecté, quelque chose est incorrect avec votre web server config. Les erreurs que vous avez indiqués sont 400 (bad request) des erreurs. Vous devriez également essayer de tourner les rapports d'erreur: error_reporting(E_ALL);
J'ai essayé d'ajouter ini_set('error_reporting', 'E_ALL'); sur la page ainsi que error_reporting = E_ALL en php.ini, mais ni changé, le message d'erreur. Pouvez-vous me diriger dans la bonne direction pour comment je peux vérifier mon server config?
error_reporting est une fonction, vous devez utiliser exactement ce que j'ai posté - ce que vous mettez sera la cause d'une erreur 500 par lui-même!

OriginalL'auteur David Starkey | 2014-10-27

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *