J'ai passé toute la matinée à chercher cela sur Internet pour essayer de trouver une solution à ce sujet. J'ai installé le serveur Wamp sur Windows 8.1 et j'essaie d'envoyer des mails avec sendmail ( http://glob.com.au/sendmail/ ) et mon compte gmail
Lorsque je configure sendmail pour utiliser le port nº 465, j'obtiens toujours cette erreur: Erreur de socket # 10060 La connexion a expiré
Si j'essaie d'utiliser le port nº 587, j'obtiens cette ligne dans le journal des erreurs: Connexion fermée gracieusement. Mais aucun e-mail n'est envoyé.
Ceci est mon fichier sendmail.ini
[sendmail]
smtp_server=smtp.gmail.com
;I tried both: 587, 465
smtp_port=587
; I tried: "blank, auto ssl, tls, none"
smtp_ssl=
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=mypass
hostname=localhost
Et ceci est le fichier php.ini
[mail function]
smtp_port = 465
sendmail_path="C:\wamp\sendmail\sendmail.exe -t"
mail.add_x_header = On
ssl_module est actif sur Apache et php utilise l'extension php_open_ssl et php_socket.
J'ai aussi essayé d'utiliser un stunnel sans succès
EDIT 27/01/2014
J'ai mis smtp_port = 465 et smtp_ssl = ssl sur sendmail.ini. En outre, j'ai défini que sendmail.exe doit s'exécuter en tant que programmes Windows XP SP3. Après cela, lorsque j'exécute sendmail.exe sur la console Windows, il envoie correctement l'e-mail. Cependant, lorsque Wamp essaie d'envoyer des e-mails. J'obtiens cette erreur dans les journaux d'erreurs de sendmail .: Erreur de socket # 10060 La connexion a expiré.
Voici le code que j'utilise pour tester sendmail:
<?php
$email = "[email protected]";
$to = "[email protected]";
$subject = "Hi!";
$body = "Hi,How are you?";
$headers = 'From: ' .$email . "\r\n".'Reply-To: ' . $email. "\r\n".'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $body, $headers)) echo("<p>Email successfully sent</p>");
else echo("<p>Email delivery failed</p>");
?>
Enfin, j'ai trouvé la réponse.
Le problème est que sendmail doit être exécuté en tant qu'administrateur. C'est la solution pour aider n'importe qui dans ma situation.
Et économisez: D
2 jours perdus dans ce non-sens :(
En tant qu'extension de la réponse acceptée:
Si vous exécutez la fonction d'envoi de courrier en PHP, une boîte de dialogue peut apparaître pour vous demander d'exécuter l'application "envoyer du courrier" en tant qu'administrateur. Lorsque vous cliquerez sur "Oui", une boîte de dialogue d'invite de commandes s'affichera et rien ne se passera et votre page se bloquera jusqu'à la fermeture de l'invite de commandes. La fonction de messagerie retournera même "True", mais en réalité aucun message n'a été envoyé.
Pour résoudre ce problème, suivez les mêmes instructions que la réponse acceptée et exécutez également le serveur (ou IDE) en tant qu'administrateur, soit:
1) Cliquez avec le bouton droit sur le programme (par exemple serveur, ide, invite de commande) et cliquez sur "Exécuter en tant qu'administrateur"
2) OR Programme de clic droit> propriétés> compatibilité> Cochez exécuter en tant qu'administrateur
Par exemple, si vous utilisez le PHP dans le serveur intégré, exécutez la commande Invite en tant qu'administrateur et démarrez le serveur normalement en utilisant
C:\wamp\bin\php\php5.5.12\php.exe -S localhost:80 -t C:\Users\path\to\rootFolder
Bien sûr, modifiez les chemins d'accès aux fichiers en fonction de vos besoins.
J'espère que cela aide quelqu'un !!! A passé des âges là-dessus!
Le problème est que sendmail doit être exécuté en tant qu'administrateur. C'est la solution pour aider n'importe qui dans ma situation.
Sur Windows 10, j'ai trouvé que la seule méthode qui fonctionnait était d'exécuter l'utilitaire de résolution des problèmes de compatibilité.