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.';
}
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.
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
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";
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 ;)
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
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".
Hier finden Sie eine Liste, die Sie beim Umgang mit PHPMailer beachten sollten:
extension=php_openssl.dll
in Ihrer PHP.ini nicht kommentieren$mail->SMTPSecure = 'tls';
und $mail->Port = 587;
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.
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"
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).
Port: 25 oder 587 (einige Anbieter blockieren Port 25)
Ich arbeite, indem ich den Port nach der Bereitstellung der App auf dem Server ändere.
$mail->Port = 25;
$mail->Port = 587;
GL
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.