Ich habe phpmailer () -Konzept verwendet, um E-Mails mit PHP-Skript an Benutzer von meinem freigegebenen Server zu senden. Ich kann jedoch nicht senden, obwohl in meinem Skript gemäß PHP-Code alles richtig ist.
Mein Code wie folgt:
$message = " This is testing message from my server";
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->Host = "smtp.gmail.com";
$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->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]"; // My gmail username
$mail->Password = "************"; // My Gmail Password
$mail->SetFrom("[email protected]");
$mail->Subject = "Test Mail from my Server";
$mail->Body = $message;
$mail->AddAddress($email);
if($mail->Send())
{
print json_encode("SUCCESS");
}
else
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
Hinweis: Ich habe "GMail" als SMTP-Server verwendet und SMTPSecure ist "ssl" und der Port ist "465". Benutzername und Kennwort sind mein GMail-Benutzername und -Kennwort
Ich habe einen VPS Shared Server verwendet und mein PHP-Skript auf diesem Server gespeichert.
Ich denke, es gibt kein Problem in meinem PHP-Skript und ich weiß nicht, warum es nicht funktioniert.
Ich habe den Fehler so.
2014-02-21 12:30:11 CLIENT -> SERVER: EHLO jkcorporates.com
2014-02-21 12:30:11 CLIENT -> SERVER: AUTH LOGIN
2014-02-21 12:30:11 CLIENT -> SERVER: bW9vcnRoaS5tcmsxMEBnbWFpbC5jb20=
2014-02-21 12:30:11 CLIENT -> SERVER: OTk0MTI0MTE0MA==
2014-02-21 12:30:11 SMTP ERROR: Password command failed: 534-5.7.14
534-5.7.14 i-_eumA> Please log in via your web browser and then try again.
534 5.7.14 54 k76sm17979938yho.18 - gsmtp
2014-02-21 12:30:11 CLIENT -> SERVER: QUIT
" The ERROR is " SMTP connect() failed.
Bitte geben Sie eine Lösung dafür.
Danke im Voraus.
Nicht vergessen: Ich benutze den Shared Server-Namen 'VPS.mydomain.com' und möchte GMail als SMTP-Server verwenden, um E-Mails an Benutzer zu senden.
Ein bisschen spät, aber vielleicht wird es jemand nützlich finden.
Links, die das Problem beheben (Sie müssen bei Google-Konto angemeldet sein):
https://security.google.com/settings/security/activity?hl=de&pli=1
https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
Einige Erklärungen, was passiert:
Dieses Problem kann durch "weniger sichere" Anwendungen verursacht werden, die versuchen, das E-Mail-Konto zu verwenden (dies ist laut Google-Hilfe nicht sicher, wie sie beurteilen, was sicher ist und was nicht) OR, wenn Sie sich anmelden möchten mehrmals hintereinander OR, wenn Sie das Land wechseln (verwenden Sie beispielsweise VPN, verschieben Sie den Code auf einen anderen Server oder versuchen Sie tatsächlich, sich aus einem anderen Teil der Welt anzumelden).
Zur Lösung musste ich: (erstes Mal)
Das klappte beim ersten Mal, aber einige Stunden später, wahrscheinlich, weil ich das Problem viele Male getestet hatte und das Problem mit der obigen Methode nicht behoben werden konnte. Außerdem musste ich das Captcha löschen (das lustige Bild, das Sie auffordert, ein Wort oder einen Satz zu schreiben, wenn Sie sich heutzutage zu oft in einem Konto anmelden):
Hoffe das hilft.
Benutze das:
https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
https://security.google.com/settings/security/activity?hl=en&pli=1
dieser Link ermöglicht den Zugriff auf das Google-Konto
UPDATE 19-05-2017:
Diese URL müssen Sie von der IP-Adresse aus aufrufen, an die die E-Mail gesendet wird
Wie bereits vorgeschlagen, können Sie die "weniger sicheren" Anwendungen aktivieren oder einfach von ssl
zu tls
wechseln:
$mailer->Host = 'tls://smtp.gmail.com';
$mailer->SMTPAuth = true;
$mailer->Username = "[email protected]";
$mailer->Password = "***";
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;
Wenn Sie tls
verwenden, müssen Sie für weniger sichere Anwendungen keinen Zugriff gewähren. Stellen Sie nur sicher, dass IMAP aktiviert ist.
Problem gelöst - PHPMailer - SMTP-Fehler: Kennwortbefehl fehlgeschlagen, wenn Mail von meinem Server gesendet wurde
require_once('class.phpmailer.php');
include("class.smtp.php");
$nameField = $_POST['name'];
$emailField = $_POST['email'];
$messageField = $_POST['message'];
$phoneField = $_POST['contactno'];
$cityField = $_POST['city'];
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
$body .= $nameField;
try {
//$mail->Host = "mail.gmail.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$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->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->Username = "[email protected]"; // GMAIL username
$mail->Password = "********"; // GMAIL password
$mail->AddAddress('[email protected]', 'abc');
$mail->SetFrom('[email protected]', 'def');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML($body);
$mail->Send();
echo "Message Sent OK</p>\n";
header("location: ../test.html");
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
Wichtig:
Gehen Sie zu Google Setting und aktivieren Sie die Option "weniger sichere" Anwendungen. Es wird funktionieren ... Es hat für mich funktioniert.
Ich stehe vor demselben Problem und denke, dass ich weiß, warum dies passiert.
Das von mir verwendete Google Mail-Konto wird normalerweise aus Indien verwendet, und der von mir verwendete Webserver befindet sich in den Niederlanden.
Google meldet, dass ein Anmeldeversuch von einem ungewöhnlichen Standort aus erfolgt ist, und er muss sich von diesem Standort aus über einen Webbrowser anmelden.
Außerdem musste ich verdächtigen Zugriff auf das Google Mail-Konto über https://security.google.com/settings/security/activity akzeptieren.
Aber am Ende ist mein Problem noch nicht gelöst, weil ich mich von einem Standort in den Niederlanden aus bei gmail anmelden muss.
Ich hoffe das hilft dir ein bisschen! (Leider habe ich keine E-Mail-Antworten zu dieser E-Mail-Adresse gelesen.)
Wenn Sie G Suit-Benutzer sind, kann dies vom Administrator gelöst werden
Wählen Sie nun eines der Optionsfelder .__ aus. A) Deaktivieren Sie den Zugriff auf weniger sichere Apps für alle Benutzer (empfohlen) B) Erlauben Sie Benutzern, ihren Zugriff auf weniger sichere Apps zu verwalten C) Erzwingen Sie den Zugriff auf weniger sichere Apps für alle Benutzer (nicht empfohlen)
Normalerweise funktioniert es wegen a) nicht! Und wird sofort mit der Option c) arbeiten. b) - Diese Option erfordert mehr Konfiguration für jeden Benutzer in GSuit
Ich hoffe es hilft
Dieser Fehler ist auf weitere Sicherheitsfunktionen von Google Mail zurückzuführen.
Sobald dieser Fehler generiert wurde ... Bitte melden Sie sich in Ihrem Google Mail-Konto an. Dort finden Sie die Sicherheitswarnung von GOOGLE. Folgen Sie der E-Mail.
Ihre E-Mails werden nur dann online gesendet, wenn Sie die Bestätigung in zwei Schritten für Ihr G-Mail-Konto abgeschlossen haben und dieses Kennwort verwenden.
Wenn Sie es immer noch nicht ausführen können, versuchen Sie Folgendes zusätzlich zu der von @CallMeBob bereitgestellten Methode.
Entfernen Sie das Semikolon für diese Zeile: sendmail_path = "\" C:\xampp\sendmail\sendmail.exe\"-t"
Fügen Sie für diese Zeile ein Semikolon hinzu: sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
Hinweis:
** smtp_port muss mit denen übereinstimmen, die in Ihrem PHP-Code angegeben sind.
** Vergessen Sie nicht, your-gmail-username und your-gmail-password in das von Ihnen verwendete Konto zu ändern.
**
Hoffe das hilft! :)