web-dev-qa-db-fra.com

SMTP Connect () a échoué. Le message n'a pas été envoyé. Erreur de messagerie: Echec de la connexion SMTP ()

J'essaie d'envoyer un courrier électronique à une adresse Gmail, mais l'erreur continue à se produire "SMTP -> ERREUR: échec de la connexion au serveur: la connexion a expiré (110) La connexion SMTP a échoué. Le message n'a pas été envoyé. () échoué." Quel pourrait être le problème?

        require 'class.phpmailer.php'; // path to the PHPMailer class
        require 'class.smtp.php';

            $mail = new PHPMailer();


            $mail->IsSMTP();  // telling the class to use SMTP
            $mail->SMTPDebug = 2;
            $mail->Mailer = "smtp";
            $mail->Host = "ssl://smtp.gmail.com";
            $mail->Port = 587;
            $mail->SMTPAuth = true; // turn on SMTP authentication
            $mail->Username = "[email protected]"; // SMTP username
            $mail->Password = "mypasswword"; // SMTP password 
            $Mail->Priority = 1;

            $mail->AddAddress("[email protected]","Name");
            $mail->SetFrom($visitor_email, $name);
            $mail->AddReplyTo($visitor_email,$name);

            $mail->Subject  = "Message from  Contact form";
            $mail->Body     = $user_message;
            $mail->WordWrap = 50;  

            if(!$mail->Send()) {
            echo 'Message was not sent.';
            echo 'Mailer error: ' . $mail->ErrorInfo;
            } else {
            echo 'Message has been sent.';
            }
19
Sayari

Supprimer ou commenter la ligne-

$mail->IsSMTP();

Et cela fonctionnera pour vous. 

J'ai vérifié et expérimenté de nombreuses réponses de différents sites mais je n'ai pas de solution à part la solution ci-dessus.

51
Snehasis

Vous n'avez aucun paramètre SMTPSecure pour définir le type d'authentification utilisé, et vous exécutez le paramètre d'hôte avec l'inutile 'ssl: //' (PS - ssl est sur le port 465, si vous devez l'exécuter à la place, voyez la réponse acceptée ici . Voici les lignes à ajouter/modifier:

+ $mail->SMTPSecure = 'tls';

- $mail->Host = "ssl://smtp.gmail.com";
+ $mail->Host = "smtp.gmail.com";
4
Dmitri DB

Courez-vous sur Localhost? et avez-vous édité le php.ini?

Si pas encore, essayez ceci:
1. Ouvrez xampp-> php-> php.ini
2. Rechercher extension=php_openssl.dll
3. L'initiale ressemblera à ceci ;extension=php_openssl.dll
4. Retirer le ';' et cela ressemblera à ceci extension=php_openssl.dll
5. Si vous ne trouvez pas le extension=php_openssl.dll, ajoutez cette ligne extension=php_openssl.dll.
6. Puis redémarrez votre Xampp.

Bonne chance ;)

4
Sendoh Akira

j'ai eu ce problème en disant que je recevais un courrier électronique de Google me disant que quelqu'un essayait de se connecter à votre compte. serveur

3
user5778000

Connectez-vous à votre compte Google à partir de myaccount.google.com/security , allez à "Connexion", puis à "Sécurité", faites défiler vers le bas, puis activez l'option "Autoriser les applications moins sécurisées".

2
user7347514

Voici une liste de ce que vous devriez examiner lorsque vous avez affaire à PHPMailer:

  1. Activer openSSL en supprimant les commentaires extension=php_openssl.dll dans votre fichier PHP.ini
  2. Utilisez $mail->SMTPSecure = 'tls'; et $mail->Port = 587;
  3. Activer le débogage pour si vous vous trompez ailleurs comme un nom d'utilisateur et un mot de passe incorrects, etc.
2

Vous allez tous bien. Il vous suffit de vérifier différents ports SMTP tels que 465 et d’autres qui fonctionnent sur votre système . Une autre chose à garder à l’esprit pour autoriser l’accès au compte des applications moins sécurisées de google, sinon la même erreur sera renvoyée.
Je l’ai parcourue pendant une journée entière et la seule chose que je fais de travers, c’est le numéro de port. Je viens de changer le numéro de port. et il fonctionne.

1
deepak kumar

Je sais que cela fait longtemps que cette question ne se pose pas, mais j’avais le problème exact et je l’ai résolu en désactivant SMTP_BLOCK sur csf.conf (nous utilisons CSF comme pare-feu). 

Pour désactiver simplement éditer csf.conf et désactiver SMTP_BLOCK, procédez comme suit:

###############################################################################
# SECTION:SMTP Settings
###############################################################################
# Block outgoing SMTP except for root, exim and mailman (forces scripts/users
# to use the exim/sendmail binary instead of sockets access). This replaces the
# protection as WHM > Tweak Settings > SMTP Tweaks
#
# This option uses the iptables ipt_owner/xt_owner module and must be loaded
# for it to work. It may not be available on some VPS platforms
#
# Note: Run /etc/csf/csftest.pl to check whether this option will function on
# this server
# SMTP_BLOCK = "1" --> this will cause phpmailer Connection timed out (110)
SMTP_BLOCK = "0"
1
Goldbug

Pour le faire fonctionner, je devais accéder à myaccount.google.com -> "Applications et sites connectés" et activer "Autoriser les applications moins sécurisées" sur "ON" (près du bas de la page).

0

Mailjet

PARAMETRES SMTP

Port: 25 ou 587 (certains fournisseurs bloquent le port 25) 

Je travaille en changeant le port après avoir déployé l'application sur le serveur.

  • En Debug cela a fonctionné pour moi: $mail->Port = 25;
  • Dans Release cela a fonctionné pour moi: $mail->Port = 587;

GL

0
IT Developers

Si cela fonctionne sur votre hôte local mais pas sur votre hébergeur: 

Certains sites d’hébergement bloquent certains ports SMTP sortants . Commenter la ligne $mail->IsSMTP(); comme indiqué dans la réponse acceptée peut le faire fonctionner, mais il s’agit simplement de désactiver votre configuration SMTP et d’utiliser la configuration de messagerie du site d’hébergement. 

Si vous utilisez GoDaddy, il n’ya aucun moyen d’envoyer un courrier en utilisant un autre SMTP. J'utilisais SiteGround et j'ai constaté qu'ils autorisaient l'accès SMTP à partir des ports 25 et 465 uniquement, avec un type de cryptage SSL. Je voudrais donc consulter la documentation de votre hôte et partir de là.

0
Stephanie