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 dePHPMailerAutoload.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
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
Vous devez vous connecter pour publier un commentaire.
Dirait que vous avez à traiter avec des tas de questions, et en voici la liste: vous rencontrez des problèmes avec le protocole ssl, le logiciel de messagerie et d'identification. Il est devenu un sujet de 3 à partir de la question et je devine que vous n'avez pas soit vos informations d'identification tapé correctement ou votre open ssl n'est pas en place et que vous êtes aussi d'avoir des problèmes en utilisant le logiciel de courrier électronique.
535 535 5.7.3 l'Authentification Échoue moyens d'authentification échoue, vérifiez vos informations d'identification nom d'utilisateur et mot de passe.
550 code d'erreur, cela signifie que le système de réception n'a pas pu livrer votre e-mail de l'utilisateur à qui elle était adressée, car la boîte aux lettres n'est pas disponible.
Il y a beaucoup d'autres solutions pour résoudre votre problème. Pourquoi n'essayez-vous pas quelque chose de plus simple au lieu d'utiliser la méthode autoload PHPMailerAutoload.php. Créer un nouveau fichier et placez le code ci-dessous, créer un corps de message (test_message.html) et de l'appeler à partir du navigateur de test smtp de gmail avec les identifiants gmail. Ceci est un extrait de PHPMailer sur comment l'utiliser avec le smtp de gmail et il ne devrait pas aller mal si vous avez tout rempli correctement.
Si vous êtes l'obtention d'authentification de l'utilisateur de l'erreur, puis vos informations d'identification ne sont pas tapé dans l'
correctement. Si ce n'est pas le problème, vous obtiendrez une erreur ssl si vous n'utilisez pas le port de droite.
Si il y a des problèmes de logiciel sont, vous devriez essayer quelque chose de mieux.
Je me demandais ce matin, si je doit PHPMailer, s'est retrouvé à l'aide de Swiftmailer qui a travaillé juste après je l'ai installé avec PHPComposer.
Mon serveur de messagerie Interne est extrêmement pointilleux et a des tonnes de paramètres de pare-feu et les règles sur le matériel et le logiciel niveau et j'ai été surpris qu'il ne me donne pas tous les problèmes; les e-mails ont été envoyés tout de suite sans aucun problème sur le port 587.
C'est ce que vous avez besoin pour gmail:
Si rien de ce que vous voulez, vous pouvez essayer phpgmailer:
https://github.com/GregDracoulis/LectureBank/tree/master/phpgmailer
voici un exemple sur la façon de l'utiliser:
http://www.vulgarisoverip.com/2006/10/13/update-send-email-with-php-and-gmail-hosted-for-your-domain/
cette classe est dédié à gmail utiliser.
Si tous vos problèmes et questions se rapportent à openSSL, vous devez suivre les étapes ci-dessous:
1. Assurez-vous que le module OpenSSL fichier DLL est inclus dans l'installation de PHP:
C:\user>dir \local\php\ext\php_openssl.dll
Répertoire de C:\local\php\ext
php_openssl.dll
2. Créer le fichier de configuration de PHP,
\local\php\php.ini
, si elle n'existe pas:3. Activer le module OpenSSL en éditant le fichier de configuration avec un éditeur de texte. Vous devez supprimer le commentaire maker (;) sur deux lignes de configuration:
Que c'est. Vous devriez être tous ensemble la configuration d'openSSL sur votre Windows Serveur web IIS. Suivez ces options et mesures, il pourrait être votre problème.
extension_dir = "ext"
sans commentaire, mais après l'activation et l'exécution deiisreset
le résultat est le même. Essayer de installer Swiftmailer donne d'erreur mentionné dans mise à JOUR 3. PHPGMailer donneFatal error: Call to undefined method PHPGMailer::From()
.quelle est votre version de php, et comment vous vous y compris ces fichiers? avez-vous de la lib de l'installation correctement dans un répertoire où est facilement accessible par votre script php?
PHP Version 5.5.8 et y compris à l'aide de
require_once('incl\phpGMailer\class.phpgmailer.php');
qui est l'endroit où j'ai mis les 3 fichiers. PHPMailer est la même que dans ma question, qui je suppose est de travailler parce que la page est bien jusqu'à ce que le$mail->Send();
si vous vérifié si vous avez openssl est installé sur votre serveur?
C:\php\ext\
contientphp_openssl.dll
et le dossieropenssl
maisphpinfo()
états:OpenSSL support | disabled (install ext/openssl)
OriginalL'auteur unixmiah
Ce problème est slash ( \ )
Modifier
OriginalL'auteur Buse Gönen
J'ai essayé avec vous code, et je ne l'ai modifié cette ligne :
par celui-ci :
Et il a travaillé avec succès.
Vous devez également garder l'attention sur votre PHPMailer version et votre version de PHP.
Avez-vous essayé d'envoyer un email avec pas sécurisées méthode ?
Êtes-vous sûr que votre google informations d'identification sont valides ?
Mis à JOUR
À partir de la ligne de commande de votre serveur, qu'est-ce que la sortie de cette commande et du temps qu'il faut pour répondre
Fatal error: Class 'SMTP' not found in C:\inetpub\wwwroot\incl\PHPMailer\class.phpmailer.php on line 1195
Comme pour vos autres questions, je vais mettre à jour ma question avec ces détails.Réponse de la commande telnet:
200 mx.google.com ESMTP i15sm10941378wjq.22 - gsmtp
OriginalL'auteur Halayem Anis
Je me demande si vous rencontrez le même problème que cette question couru dans. Google activement fronce les sourcils sur les personnes à l'aide de Gmail comme leur propre serveur SMTP.
http://www.labnol.org/internet/email/gmail-daily-limit-sending-bulk-email/2191/
J'ai pu voir une erreur de ce type qui pourrait produire une erreur 500.
OriginalL'auteur Machavity
À partir des commentaires à la question, il semble assez clair que cette question est OpenSSL liés.
Vous avez mentionné que vous avez déjà
extension=php_openssl.dll
sans commentaire, maisphpinfo()
ne le montre pas être chargé.Quelques réflexions:
Avez-vous redémarré le serveur, après décommentant la openssl module php dans votre
php.ini
?C'est vraiment évident, mais il vaut la peine de mentionner. Le
php.ini
est chargé au démarrage, et ne pas faire un redémarrage du service est tout simplement une erreur commune.Vérifier la valeur de
Loaded Configuration File
dansphpinfo()
Si ce n'est pas le même emplacement que le
php.ini
qui vous avez édité, il devient clair pourquoi il n'a pas été chargé. Aussi les lignes suivantes à partir dephpinfo()
peut-être la peine de vérifier.Il y a d'autres choses qui peut être fait comme pour la désinstallation et la réinstallation d'OpenSSL, mais il pourrait être bon de vérifier ces choses évidentes au premier abord.
Réflexions:
Vérifier les journaux d'erreur
Pour php le chemin d'accès peut (encore) être trouvés dans votre
phpinfo()
. Recherchez la valeur deerror_log
et vérifier les dernières entrées, juste après que vous avez essayé de recharger votre page.Aussi, vous pouvez vouloir vérifier les fichiers journaux IIS. Si vous ne connaissez pas le chemin d'accès de regarder dans le Gestionnaire des services IIS, sélectionnez l'ordinateur sur le volet de gauche, puis dans le volet du milieu, allez sous "enregistrement" dans la zone IIS. Habituellement, ce sera le point de quelque chose comme
C:\inetpub\logs\LogFiles
ouC:\Windows\System32\LogFiles
avec un sous-dossier commeW3SVC[x]
où[x]
est le site d'ID. (Sera juste1
si vous avez seulement une page, sinon vérifier le niveau supérieur de sites web dossier dans le Gestionnaire des services internet, de consulter les listes de sites dans le volet de droite, c'est l'ID de l'Application)iisreset
de nombreuses fois, mais juste pour être sûr que j'ai fait en sorte que la ligne a été retirée et il a couru de nouveau. Pas de changement. Quant à votre deuxième point:Loaded Configuration File: C:\PHP\php.ini
C'est le même que celui que j'ai été de l'édition.Configuration File (php.ini) Path: C:\Windows
(qui peut être le problème?)Scan this dir for additional .ini files: (none)
Depuis votre
Loaded Configuration File
est que vous êtes à l'édition, cela devrait faire l'affaire (bien que vous pouvez essayer avec de le copier dans le path de Windows, etc. mais il devrait vraiment(!) n'ont pas d'incidence).IISReset
aussi est correct pour redémarrer votre serveur web services. J'ai ajouté un troisième point concernant les journaux d'erreur ... vous pouvez vérifier cela.phpinfo()
pour l'enregistrement du journal esterror_log | no value | no value
. Comme pour IIS journal des erreurs, j'ai pas l'impression d'avoir le choix... Ajouté quelques détails au sujet de l'Observateur d'Événements de sortie à la question.Aussi, en essayant de mettre un emplacement à l'aide de
error_log = "C:\Windows\temp\php_errors.log"
ne change pas la sortie.Wow c'est vraiment une question difficile oO. Ainsi, les journaux d'erreur serait extrêmement utile, de sorte que nous allons aborder en premier. Avez-vous également vérifié ces deux endroits mentionnés ci-dessus (
C:\inetpub\logs\...
etC:\Windows\System32\LogFiles\W3SVC1
)? Comme pour l'erreur php journal, avez-vous également définirlog_errors = On
et, éventuellement,error_reporting = E_ALL
(mais celui-ci ne devrait pas vraiment d'importance, puisque vous l'avez mis dans votre code php au début).OriginalL'auteur Levit
Installation et la Configuration d'IIS
Commencez par aller à la ServerManager sur votre Serveur. Le plus souvent c'est le serveur que vous allez exécuter votre site web php sur. Allez à Ajouter des fonctionnalités dans la section résumé des Fonctionnalités. Vérifiez les Services SMTP de l'Assistant Ajout de Fonctionnalités et de frapper installer. Maintenant, attendez la fin de l'installation. Ouvrir IIS6 (ou IIS7) Gestionnaire sous Outils d'Administration -> Internet Information Services 6.0 dans le Menu Démarrer, la configuration de SMTP rend l'utilisation de la console de gestion de IIS6. En vertu de [Serveur Virtuel SMTP], cliquez sur le bouton droit de la souris et sélectionnez propriétés dans le menu contextuel. Allez à l'Onglet Accès, puis a frappé le bouton Relais.Ajouter une nouvelle entrée à la liste en cliquant sur le bouton Ajouter et saisissez l'adresse 127.0.0.1 (ou l'IP de votre serveur web) dans le seul champ de saisie de l'ordinateur. Cliquez sur Ok à deux reprises pour appliquer les nouveaux paramètres.
La Configuration De Php
Pour faire de Php envoyer des e-mails, vous devez faire certaines configurations. Fondamentalement, il existe deux options.
Dans le cas où vous allez seulement utiliser le serveur SMTP dans un projet unique et ne veulent pas qu'il interfère avec d'autres projets, vous pouvez définir la configuration de l'intérieur de votre code php en ajoutant les lignes suivantes dans le monde avant l'envoi de l'email:
D'une autre manière, de faire de l'utilisation globale de ces paramètres, ajoutez les lignes suivantes à votre php.fichier ini.
Assurez-vous de redémarrer votre serveur après avoir fait ces changements, pour être sûr qu'ils sont chargés.
Cette solution est fournie ici http://geekswithblogs.net/tkokke/archive/2009/05/31/sending-email-from-php-on-windows-using-iis.aspx sur la façon de configurer IIS et php, et a été fourni de réponse à cette question Erreur 500 lors de l'utilisation de la fonction MAIL
Essayer ce, je reçois
mail(): SMTP server response: 550 5.7.3 Requested action aborted; user not authenticated
OriginalL'auteur Peter Darmis
Essayez d'utiliser le chiffrement SSL avec le port 465:
if( $mail->Send() )
vérifier.C'est une extraction à partir de Gmail documentation comment configurer externes, clients de messagerie SMTP: serveur de Courrier Sortant (SMTP) Serveur requiert TLS ou SSL: smtp.gmail.com; Utiliser l'Authentification: Oui; Port pour le protocole TLS/STARTTLS: 587; numéro de Port SSL: 465
C'est génial, mais ça ne marche toujours pas pour moi. Il existe un lien que l'on peut montrer de ce qui pourrait aller dans le détail?
Je conseille temporairement à l'installation d'un test compte gmail dans Outlook ou Thunderbird pour tester les paramètres du serveur SMTP. Au moins il fait des travaux dans ma MS Outlook 2007, à l'aide de SSL avec le port 465. Si la même erreur, vous avez peut-être vérifier le pare-feu ou de fournisseur de services internet local.
S'il vous plaît ne pas utiliser d'anciennes versions. Gmail doit utiliser le protocole tls sur 587, comme par le PHPMailer la documentation et des exemples. ssl sur 465 est à éviter.
OriginalL'auteur user3806621
C'est la façon dont j'avais mon dossier acheminé
Avant:
require_once "mailer/PHPMailerAutoload.php";
Après:
require_once "../mailer/PHPMailerAutoload.php";
...Même processus que vous le feriez normalement pour lier un img comme arrière-plan à l'aide de css.
OriginalL'auteur roman