web-dev-qa-db-de.com

SMTP Connect () ist fehlgeschlagen. Nachricht wurde nicht gesendet. Fehler: SMTP Connect () ist fehlgeschlagen

Ich versuche, E-Mails an eine Google Mail-Adresse zu senden, diese Fehlermeldung wird jedoch weiterhin angezeigt. "SMTP -> ERROR: Verbindung zum Server fehlgeschlagen: Verbindungszeitüberschreitung (110) SMTP Connect () ist fehlgeschlagen. Nachricht wurde nicht gesendet. Fehler: SMTP Connect () gescheitert." Was könnte das Problem sein?

        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

Entfernen oder kommentieren Sie die Zeile aus.

$mail->IsSMTP();

Und es wird für Sie arbeiten. 

Ich habe viele Antworten von verschiedenen Standorten aus geprüft und experimentiert, habe aber keine Lösung außer der obigen Lösung.

51
Snehasis

Sie müssen php_openssl.dll installiert haben, wenn Sie wampserver verwenden, ist es ziemlich einfach, die Erweiterung für PHP zu suchen und anzuwenden.

Im Beispiel ändern Sie dies:

    //Set the hostname of the mail server
    $mail->Host = 'smtp.gmail.com';

    //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission 465 ssl
    $mail->Port = 465;

    //Set the encryption system to use - ssl (deprecated) or tls
    $mail->SMTPSecure = 'ssl';

und dann haben Sie eine E-Mail von Google Mail erhalten, in der Sie die Option zum Aktivieren von Anwendungen mit weniger sicherem Zugriff hier https://www.google.com/settings/security/lesssecureapps aktiviert haben

Ich empfehle Ihnen, das Passwort zu ändern und es ständig zu verschlüsseln

9
El David

Sie haben keine SMTPSecure-Einstellung, um die Art der verwendeten Authentifizierung zu definieren, und Sie führen die Host-Einstellung mit dem unnötigen 'ssl: //' aus (PS-ssl befindet sich über Port 465, falls Sie es ausführen müssen ssl stattdessen die akzeptierte Antwort hier Hier sind die Zeilen, die hinzugefügt/geändert werden sollen:

+ $mail->SMTPSecure = 'tls';

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

Laufen Sie auf Localhost? und haben Sie den php.ini bearbeitet?

Wenn noch nicht, probiere es aus:
1. Öffnen Sie xampp-> php-> php.ini
2. Suche nach extension=php_openssl.dll
3. Der Anfangsbuchstabe sieht so aus ;extension=php_openssl.dll
4. Entferne das ';' und es wird so aussehen extension=php_openssl.dll
5. Wenn Sie den extension=php_openssl.dll nicht finden können, fügen Sie diese Zeile extension=php_openssl.dll hinzu.
6. Starten Sie dann Ihren Xampp neu.

Viel Glück ;)

4
Sendoh Akira

ich hatte das Problem, dass ich eine E-Mail von Google bekomme, die mir mitteilt, dass jemand versucht, sich bei Ihrem Konto anzumelden, und Sie antworten mit Ja Server

3
user5778000

Melden Sie sich in Ihrem Google-Konto unter myaccount.google.com/security an. Gehen Sie zu "Anmelden" und dann zu "Sicherheit". Blättern Sie nach unten und aktivieren Sie die Option "Weniger sichere Apps zulassen".

2
user7347514

Hier finden Sie eine Liste, die Sie beim Umgang mit PHPMailer beachten sollten:

  1. Aktivieren Sie openSSL, indem Sie extension=php_openssl.dll in Ihrer PHP.ini nicht kommentieren
  2. Verwenden Sie $mail->SMTPSecure = 'tls'; und $mail->Port = 587;
  3. Aktivieren Sie das Debugging, wenn Sie an einem anderen Ort falsch laufen, beispielsweise falscher Benutzername und Passwort.

Du machst alles gut. Sie müssen nur verschiedene SMTP-Ports wie 465 und andere, die auf Ihrem System funktionieren, prüfen. Eine weitere Sache, die Sie beachten sollten, um den Zugriff auf die weniger sichere Apps zu erlauben durch Google-Konto, andernfalls wird der gleiche Fehler ausgegeben.
Ich habe es einen ganzen Tag durchgemacht und das einzige, was ich falsch mache, ist die Portnummer. Ich habe gerade die Portnummer geändert. und es funktioniert.

1
deepak kumar

Ich weiß, dass diese Frage schon eine Weile her ist, aber ich hatte das genaue Problem und löste es, indem SMTP_BLOCK in csf.conf deaktiviert wurde (wir verwenden CSF für eine Firewall). 

Um zu deaktivieren, bearbeiten Sie einfach csf.conf und deaktivieren Sie SMTP_BLOCK wie folgt:

###############################################################################
# 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

Damit es funktioniert, musste ich zu myaccount.google.com -> "Verbundene Apps und Websites" gehen und "Weniger sichere Apps zulassen" auf "EIN" stellen (am unteren Rand der Seite).

0

Mailjet

SMTP-EINSTELLUNGEN

Port: 25 oder 587 (einige Anbieter blockieren Port 25) 

Ich arbeite, indem ich den Port nach der Bereitstellung der App auf dem Server ändere.

  • In Debug hat es für mich funktioniert: $mail->Port = 25;
  • In Release hat es für mich funktioniert: $mail->Port = 587;

GL

0
IT Developers

Wenn es auf Ihrem localhost funktioniert, aber nicht auf Ihrem Webhost: 

Einige Hosting-Sites bestimmte ausgehende SMTP-Ports blockieren . Das Auskommentieren der Zeile $mail->IsSMTP();, wie in der akzeptierten Antwort angegeben, kann dazu führen, dass dies funktioniert, es wird jedoch lediglich die SMTP-Konfiguration deaktiviert und die E-Mail-Konfiguration der Hosting-Site verwendet. 

Wenn Sie GoDaddy verwenden, können Sie keine E-Mails mit einem anderen SMTP senden. Ich habe SiteGround verwendet und stellte fest, dass SMTP-Zugriff nur über die Ports 25 und 465 mit einem SSL-Verschlüsselungstyp zulässig war. Ich würde also die Dokumentation für Ihren Host nachschlagen und von dort aus weitergehen.

0
Stephanie