Senden Sie E-Mails mit dem GMail SMTP-Server von einer PHP-Seite

Ich versuche, eine E-Mail über den SMTP-Server von Google Mail von einer PHP-Seite zu senden, aber ich erhalte diesen Fehler:

Authentifizierungserrors [SMTP: SMTP-Server unterstützt keine Authentifizierung (Code: 250, Antwort: mx.google.com zu Ihren Diensten, [98.117.99.235] GRÖSSE 35651584 8BITMIME STARTTLS VERBESSERTESTATUSKODIERUNG PIPELINING)]

Kann jemand helfen? Hier ist mein Code:

<?php require_once "Mail.php"; $from = "Sandra Sender "; $to = "Ramona Recipient "; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; $host = "smtp.gmail.com"; $port = "587"; $username = "testtest@gmail.com"; $password = "testtest"; $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo("

" . $mail->getMessage() . "

"); } else { echo("

Message successfully sent!

"); } ?>

Solutions Collecting From Web of "Senden Sie E-Mails mit dem GMail SMTP-Server von einer PHP-Seite"

 // Pear Mail Library require_once "Mail.php"; $from = ''; $to = ''; $subject = 'Hi!'; $body = "Hi,\n\nHow are you?"; $headers = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); $smtp = Mail::factory('smtp', array( 'host' => 'ssl://smtp.gmail.com', 'port' => '465', 'auth' => true, 'username' => 'johndoe@gmail.com', 'password' => 'passwordxxx' )); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo('

' . $mail->getMessage() . '

'); } else { echo('

Message successfully sent!

'); }

Mit dem Swift-Mailer können Sie ganz einfach eine E-Mail über Google Mail-Anmeldeinformationen senden:

 < ?php require_once 'swift/lib/swift_required.php'; $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl") ->setUsername('GMAIL_USERNAME') ->setPassword('GMAIL_PASSWORD'); $mailer = Swift_Mailer::newInstance($transport); $message = Swift_Message::newInstance('Test Subject') ->setFrom(array('abc@example.com' => 'ABC')) ->setTo(array('xyz@test.com')) ->setBody('This is a test mail.'); $result = $mailer->send($message); ?> 

Ihr Code scheint nicht TLS (SSL) zu verwenden, das erforderlich ist, um E-Mails an Google zu senden (und Port 465 oder 587 zu verwenden) .

Sie können dies tun, indem Sie einstellen

$host = "ssl://smtp.gmail.com";

Ihr Code sieht verdächtig nach diesem Beispiel aus, das im Hostnamenschema auf ssl: // verweist.

Ich empfehle Pear Mail nicht. Es wurde seit 2010 nicht aktualisiert. Lesen Sie auch die Quelldateien; der Quellcode ist fast veraltet, in PHP 4 geschrieben und viele Fehler / Bugs wurden gepostet (Google it). Ich benutze Swift Mailer.

Swift Mailer lässt sich in jede in PHP 5 geschriebene Webanwendung integrieren und bietet einen flexiblen und eleganten objektorientierten Ansatz zum Versenden von E-Mails mit einer Vielzahl von functionen.

Senden Sie E-Mails mit SMTP, Sendmail, Postfix oder einer eigenen benutzerdefinierten Transport-Implementierung.

Unterstützen Sie Server, die Benutzername und Passwort und / oder Verschlüsselung benötigen.

Schützen Sie sich vor Header-Injection-Angriffen, ohne den Dateninhalt der Anfrage zu streichen

Senden Sie MIME-konforme HTML- / Multipart-E-Mails.

Verwenden Sie ereignisgesteuerte Plug-Ins, um die Bibliothek anzupassen.

Behandeln Sie große Anhänge und eingebettete Bilder mit geringer Speicherbelegung.

Sie können Swift Mailer kostenlos herunterladen und auf Ihren Server hochladen. (Die Feature-Liste wird von der Besitzer-Website kopiert).

Das Arbeitsbeispiel von Gmail SSL / SMTP und Swift Mailer ist hier …

 // Swift Mailer Library require_once '../path/to/lib/swift_required.php'; // Mail Transport $transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465) ->setUsername('username@gmail.com') // Your Gmail Username ->setPassword('my_secure_gmail_password'); // Your Gmail Password // Mailer $mailer = Swift_Mailer::newInstance($transport); // Create a message $message = Swift_Message::newInstance('Wonderful Subject Here') ->setFrom(array('sender@example.com' => 'Sender Name')) // can be $_POST['email'] etc... ->setTo(array('receiver@example.com' => 'Receiver Name')) // your email / multiple supported. ->setBody('Here is the message itself. It can be text or 

HTML

.', 'text/html'); // Send the message if ($mailer->send($message)) { echo 'Mail sent successfully.'; } else { echo 'I am sure, your configuration are not correct. :('; }

Ich hoffe das hilft. Viel Spaß beim Programmieren … 🙂

 < ?php date_default_timezone_set('America/Toronto'); require_once('class.phpmailer.php'); //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded $mail = new PHPMailer(); $body = "gdssdh"; //$body = eregi_replace("[\]",'',$body); $mail->IsSMTP(); // telling the class to use SMTP //$mail->Host = "ssl://smtp.gmail.com"; // SMTP server $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "ssl"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 465; // set the SMTP port for the GMAIL server $mail->Username = "user@gmail.com"; // GMAIL username $mail->Password = "password"; // GMAIL password $mail->SetFrom('contact@prsps.in', 'PRSPS'); //$mail->AddReplyTo("user2@gmail.com', 'First Last"); $mail->Subject = "PRSPS password"; //$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test $mail->MsgHTML($body); $address = "user2@yahoo.co.in"; $mail->AddAddress($address, "user2"); //$mail->AddAttachment("images/phpmailer.gif"); // attachment //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } ?> 

SwiftMailer kann E-Mail mit externen Servern senden.

Hier ist ein Beispiel, das zeigt, wie man einen Google Mail-Server verwendet:

 require_once "lib/Swift.php"; require_once "lib/Swift/Connection/SMTP.php"; //Connect to localhost on port 25 $swift =& new Swift(new Swift_Connection_SMTP("localhost")); //Connect to an IP address on a non-standard port $swift =& new Swift(new Swift_Connection_SMTP("217.147.94.117", 419)); //Connect to Gmail (PHP5) $swift = new Swift(new Swift_Connection_SMTP( "smtp.gmail.com", Swift_Connection_SMTP::PORT_SECURE, Swift_Connection_SMTP::ENC_TLS)); 

Der Code, der in der Frage aufgeführt wird, benötigt zwei Änderungen

 $host = "ssl://smtp.gmail.com"; $port = "465"; 

Port 465 ist für eine SSL-Verbindung erforderlich.

Senden Sie E-Mails mit der phpMailer-Bibliothek über Gmail. Laden Sie Bibliotheksdateien von Github herunter

 < ?php /** * This example shows settings to use when sending via Google's Gmail servers. */ //SMTP needs accurate times, and the PHP time zone MUST be set //This should be done in your php.ini, but this is how to do it if you don't have access to that date_default_timezone_set('Etc/UTC'); require '../PHPMailerAutoload.php'; //Create a new PHPMailer instance $mail = new PHPMailer; //Tell PHPMailer to use SMTP $mail->isSMTP(); //Enable SMTP debugging // 0 = off (for production use) // 1 = client messages // 2 = client and server messages $mail->SMTPDebug = 2; //Ask for HTML-friendly debug output $mail->Debugoutput = 'html'; //Set the hostname of the mail server $mail->Host = 'smtp.gmail.com'; // use // $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6 //Set the SMTP port number - 587 for authenticated TLS, aka RFC4409 SMTP submission $mail->Port = 587; //Set the encryption system to use - ssl (deprecated) or tls $mail->SMTPSecure = 'tls'; //Whether to use SMTP authentication $mail->SMTPAuth = true; //Username to use for SMTP authentication - use full email address for gmail $mail->Username = "username@gmail.com"; //Password to use for SMTP authentication $mail->Password = "yourpassword"; //Set who the message is to be sent from $mail->setFrom('from@example.com', 'First Last'); //Set an alternative reply-to address $mail->addReplyTo('replyto@example.com', 'First Last'); //Set who the message is to be sent to $mail->addAddress('whoto@example.com', 'John Doe'); //Set the subject line $mail->Subject = 'PHPMailer GMail SMTP test'; //Read an HTML message body from an external file, convert referenced images to embedded, //convert HTML into a basic plain-text alternative body $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__)); //Replace the plain text body with one created manually $mail->AltBody = 'This is a plain-text message body'; //Attach an image file $mail->addAttachment('images/phpmailer_mini.png'); //send the message, check for errors if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } 

Gmail benötigt Port 465 und es ist auch der Code von phpmailer 🙂

Ich hatte dieses Problem auch. Ich habe die richtigen Einstellungen vorgenommen und weniger sichere Apps aktiviert, aber es hat immer noch nicht funktioniert. Schließlich habe ich diese https://accounts.google.com/UnlockCaptcha aktiviert, und es hat für mich funktioniert. Ich hoffe, das hilft jemandem.

Um PEARs Mail.php in Ubuntu zu installieren, führe folgende Befehle aus:

  sudo apt-get install php-pear sudo pear install mail sudo pear install Net_SMTP sudo pear install Auth_SASL sudo pear install mail_mime 

Ich habe eine Lösung für GSuite-Konten, die nicht über den Suffix “@ gmail.com” verfügen. Ich denke auch, dass es für GSuite-Konten mit der @ gmail.com funktioniert, aber nicht probiert hat. Als erstes sollten Sie die Rechte haben, die Option “allosw weniger sichere App” für Ihr GSuite-Konto zu ändern. Wenn Sie die Berechtigungen haben (Sie können in den Kontoeinstellungen-> Sicherheit einchecken), müssen Sie die “Zwei-Schritt-Faktor-Authentifizierung” deaktivieren. Gehen Sie zum Ende der Seite und wählen Sie “Ja”, um weniger sichere Anwendungen zuzulassen. Das ist alles. Wenn Sie nicht berechtigt sind, diese Optionen zu ändern, funktioniert die Lösung für diesen Thread nicht. Überprüfen Sie https://support.google.com/a/answer/6260879?hl=de , um Änderungen an der Option “Erlaube weniger …” vorzunehmen.

einstellen

 'auth' => false, 

Sehen Sie auch, ob Port 25 funktioniert.