Senden Sie E-Mails über den Gmail-SMTP-Server über PHP Mailer

Ich möchte eine E-Mail über den Gmail SMTP- Server über PHP Mailer senden.

Das ist mein Code

IsSMTP(); $mail->CharSet="UTF-8"; $mail->SMTPSecure = 'tls'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->Username = 'MyUsername@gmail.com'; $mail->Password = 'valid password'; $mail->SMTPAuth = true; $mail->From = 'MyUsername@gmail.com'; $mail->FromName = 'Mohammad Masoudian'; $mail->AddAddress('anotherValidGmail@gmail.com'); $mail->AddReplyTo('phoenixd110@gmail.com', 'Information'); $mail->IsHTML(true); $mail->Subject = "PHPMailer Test Subject via Sendmail, basic"; $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; $mail->Body = "Hello"; if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?> 

aber ich erhalte diesen folgenden Fehler

 Mailer Error: SMTP Error: The following recipients failed: anotherValidGmail@gmail.com SMTP server error: SMTP AUTH is required for message submission on port 587 

Meine Domain ist vatandesign.ir

 $mail = new PHPMailer(); // create a new object $mail->IsSMTP(); // enable SMTP $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAuth = true; // authentication enabled $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail $mail->Host = "smtp.gmail.com"; $mail->Port = 465; // or 587 $mail->IsHTML(true); $mail->Username = "email@gmail.com"; $mail->Password = "password"; $mail->SetFrom("example@gmail.com"); $mail->Subject = "Test"; $mail->Body = "hello"; $mail->AddAddress("email@gmail.com"); if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent"; } 

Dieser Code wurde für mich getestet und funktioniert.

Es könnte sein, dass Sie $mail->SMTPSecure = 'ssl';

Stellen Sie außerdem sicher, dass für dieses Konto keine zweistufige Überprüfung aktiviert ist, da dies ebenfalls Probleme verursachen kann.

AKTUALISIERT

Sie könnten versuchen, $ mail-> SMTP zu ändern:

 $mail->SMTPSecure = 'tls'; 

Es ist erwähnenswert, dass einige SMTP-Server Verbindungen blockieren. Einige SMTP-Server unterstützen keine SSL (oder TLS ) Verbindungen.

Also habe ich gerade meinen eigenen “SMTP-Verbindungserrors” -Fehler getriggers und wollte die Lösung nur für den Fall veröffentlichen, dass sie anderen hilft.

Ich habe den EXACT-Code verwendet, der in der PHPmailer-Beispieldatei gmail.phps angegeben ist. Es funktionierte einfach, während ich MAMP benutzte und dann bekam ich den SMTP-Verbindungserrors, nachdem ich es auf meinen persönlichen Server verschoben hatte.

Alle Stack-Overflow-Antworten, die ich gelesen habe, und alle Fehlerbehebungsdokumentation von PHPMailer sagten, dass dies kein Problem mit PHPMailer war. Das war ein Einstellungserrors auf der Serverseite. Ich habe verschiedene Ports ausprobiert (587, 465, 25), habe die SSL- und TLS-Verschlüsselung versucht. Ich habe überprüft, dass openssl in meiner php.ini-Datei aktiviert ist. Ich habe überprüft, dass es kein Firewall-Problem gab. Alles ausgecheckt, und immer noch nichts.

Die Lösung war, dass ich diese Zeile entfernen musste:

 $mail->isSMTP(); 

Jetzt funktioniert alles. Ich weiß nicht warum, aber es funktioniert. Der Rest meines Codes wird kopiert und aus der PHPMailer-Beispieldatei eingefügt.

Beachten Sie auch, dass Sie bei aktivierter Zwei-Faktor-Authentifizierung ein anwendungsspezifisches Passwort einrichten müssen, das anstelle des Kennworts Ihres E-Mail-Kontos verwendet wird.

Sie können ein anwendungsspezifisches Passwort generieren, indem Sie folgende statementen befolgen : https://support.google.com/accounts/answer/185833

Setzen Sie dann $mail->Password auf Ihr anwendungsspezifisches Passwort.

Es scheint, dass Ihr Server keine Verbindung zum Google Mail-SMTP-Server herstellen kann. Hier sind einige Hinweise zur Fehlerbehebung: 1) Überprüfen Sie, ob SSL auf Ihrem PHP korrekt konfiguriert ist (das Modul, das es handhabt, wird nicht standardmäßig auf PHP installiert. Sie müssen Ihre Konfiguration in phph.ini überprüfen). 2) Überprüfen Sie, ob Ihre Firewall ausgehende Anrufe an den erforderlichen Port (hier 465 oder 587) erlaubt. Verwenden Sie dazu telnet. Wenn der Port nicht geöffnet ist, benötigen Sie Unterstützung von sysdmin, um die Konfiguration einzurichten. Ich hoffe, du wirst das schnell klären!

Öffnen Sie diesen Link und wählen Sie folgen Sie den statementen google Server blockiert alle Versuche von unbekannten Servern so, sobald Sie auf Captcha klicken, alles wird in Ordnung sein

Kann nicht kommen aber ja, entfernen

 $mail->isSMTP(); 

und dir wird es gut gehen!

Google behandelt Gmail-Konten abhängig von den verfügbaren Nutzerinformationen unterschiedlich, wahrscheinlich um Spammer zu zügeln.

Ich konnte SMTP nicht verwenden, bis ich die Telefonüberprüfung durchgeführt habe. Habe einen anderen Account angelegt um dies zu überprüfen und ich konnte es bestätigen.

Ich denke, es ist ein Verbindungsproblem, das Sie Code hier bekommen können http://skillrow.com/sending-mail-using-smtp-and-php/

 include(“smtpfile.php“); include(“saslfile.php“); // for SASL authentication $from=”my@website.com“; //from mail id $smtp=new smtp_class; $smtp->host_name=”www.abc.com“; // name of host $smtp->host_port=25;//port of host $smtp->timeout=10; $smtp->data_timeout=0; $smtp->debug=1; $smtp->html_debug=1; $smtp->pop3_auth_host=””; $smtp->ssl=0; $smtp->start_tls=0; $smtp->localhost=”localhost“; $smtp->direct_delivery=0; $smtp->user=”smtp username”; $smtp->realm=””; $smtp->password=”smtp password“; $smtp->workstation=””; $smtp->authentication_mechanism=””; $mail=$smtp->SendMessage($from,array($to),array(“From:$from”,”To: $to”,”Subject: $subject”,”Date: ”.strftime(“%a, %d %b %Y %H:%M:%S %Z”)),”$message”); if($mail){ echo “Mail sent“; }else{ echo $smtp->error; } 

Dieser Code funktioniert gut für mich

  $mail = new PHPMailer; //Enable SMTP debugging. $mail->SMTPDebug = 0; //Set PHPMailer to use SMTP. $mail->isSMTP(); //Set SMTP host name $mail->Host = $hostname; //Set this to true if SMTP host requires authentication to send email $mail->SMTPAuth = true; //Provide username and password $mail->Username = $sender; $mail->Password = $mail_password; //If SMTP requires TLS encryption then set it $mail->SMTPSecure = "ssl"; //Set TCP port to connect to $mail->Port = 465; $mail->From = $sender; $mail->FromName = $sender_name; $mail->addAddress($to); $mail->isHTML(true); $mail->Subject = $Subject; $mail->Body = $Body; $mail->AltBody = "This is the plain text version of the email content"; if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo 'Mail Sent Successfully'; } 

Anderscc hat es richtig gemacht. Vielen Dank. Es hat bei mir aber nicht 100% geklappt.

Ich musste untergehen

$ mail-> SMTPDebug = 0; Wenn Sie ihn auf 1 setzen, kann dies zu Fehlern führen, insbesondere wenn Sie einige Daten als json an die nächste Seite übergeben. Beispiel – Überprüfung durchführen, wenn Mail gesendet wird, wobei json verwendet wird, um Daten über Ajax zu übergeben.

Ich musste die Sicherheitseinstellungen meines Google Mail-Kontos verringern, um Fehler zu vermeiden: “SMTP connect () failed” und “SMTP ERROR: Password command failed”

Lösung: Dieses Problem kann entweder durch “weniger sichere” Anwendungen verursacht werden, die versuchen, den E-Mail-Account zu verwenden (dies ist laut Google-Hilfe nicht sicher, wie sie beurteilen, was sicher ist und was nicht) ODER wenn Sie versuchen, sich mehrmals anzumelden ODER wenn Sie Länder wechseln (z. B. VPN verwenden, Code auf einen anderen Server verschieben oder versuchen, sich von einem anderen Teil der Welt aus einzuloggen).

Links, die das Problem beheben (Sie müssen im Google-Konto angemeldet sein):

Hinweis: Sie können den folgenden stackoverflow-Antwortlink für eine detailliertere Referenz aufrufen.

https://stackoverflow.com/a/25175234

Wenn Sie cPanel verwenden, klicken Sie einfach auf das Kästchen, mit dem Sie per SMTP an externe Server senden können.

Melden Sie sich bei CPanel an> Tweak Einstellungen> Alle> “Ausgehendes SMTP auf root, exim und mailman beschränken (FKA SMTP Tweak)”

Wie hier beantwortet:

“Passwort nicht vom Server angenommen: 535 Falsche Authentifizierungsdaten” beim Senden mit GMail und phpMailer

  $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );