PHPMailer – SMTP错误:从我的服务器发送邮件时,密码命令失败

我已经使用phpmailer()的概念,从我的共享服务器使用PHP脚本的用户发送邮件,但我不能够发送,即使一切都是正确的在我的脚本根据phpmailer代码。

我的代码是这样的:

$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 = "moorthi.mrk10@gmail.com"; // My gmail username $mail->Password = "************"; // My Gmail Password $mail->SetFrom("moorthi.mrk10@gmail.com"); $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; } 

注意:我使用“GMail”作为我的SMTP服务器,SMTPSecure是“ssl”,端口是“465”,用户名和密码是我的GMail用户名和密码

我使用VPS共享服务器,并保持我的PHP脚本在该服务器上。

我认为在我的PHP脚本没有问题,我不知道为什么它不工作。

我得到了这样的错误。

  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. 

请给一些解决scheme。
提前致谢。

请记住:我使用共享服务器名称“VPS.mydomain.com”,我想使用GMail作为我的SMTP服务器发送邮件给用户。

有点晚,但也许有人会觉得它有用。

解决问题的链接(您必须login到Google帐户):

https://security.google.com/settings/security/activity?hl=en&pli=1

https://www.google.com/settings/u/1/security/lesssecureapps

https://accounts.google.com/b/0/DisplayUnlockCaptcha

发生什么的一些解释:

这个问题可能是由于试图使用电子邮件帐户的“不太安全”的应用程序(这是根据谷歌的帮助,不知道他们如何判断什么是安全的,什么是不安全的),或者如果你试图login几次或者如果你改变了国家(例如使用VPN,将代码移到不同的服务器或实际上尝试从世界的不同地方login)。

为了解决我不得不:(第一次)

  • 通过networkinglogin我的帐户
  • 查看最近尝试使用该帐户并接受可疑访问: 此链接
  • 禁用阻止可疑应用程序/技术的function: 此链接

这是第一次,但几个小时后,可能是因为我做了很多testing问题再次出现,并不能解决使用上述方法。 此外,我必须清除validation码(这是一个有趣的图片,当您login到任何帐户时,要求您重写一个字或一个句子):

  • login到我的帐户后,我去了这里
  • 点击继续

希望这可以帮助。

用这个:

 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 

这个链接允许访问谷歌帐户

更新19-05-2017:

这些url你必须从将要发送电子邮件的IP地址访问

正如其他人已经build议,你可以启用“不太安全”的应用程序,或者你可以简单地从ssl切换到tls

 $mailer->Host = 'tls://smtp.gmail.com'; $mailer->SMTPAuth = true; $mailer->Username = "xxx@gmail.com"; $mailer->Password = "***"; $mailer->SMTPSecure = 'tls'; $mailer->Port = 587; 

在使用tls ,不需要为安全性较低的应用程序授予访问权限,只需确保已启用IMAP。

解决了这个问题 – PHPMailer – SMTP错误:从我的服务器发送邮件时,密码命令失败

  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 = "xxxxx@gmail.com"; // GMAIL username $mail->Password = "********"; // GMAIL password $mail->AddAddress('sendto@gmail.com', 'abc'); $mail->SetFrom('xxxxxx@gmail.com', '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! } 

重要:

去谷歌设置,并做'不太安全的'应用程序启用。 它会工作。 它为我工作。

我面临同样的问题,并认为我知道为什么发生这种情况。

我使用的Gmail帐户通常来自印度,我使用的networking服务器位于荷兰。

谷歌通知,有一个不寻常的位置login尝试,并要求通过networking浏览器从该位置login。

此外,我必须通过https://security.google.com/settings/security/activity接受对gmail帐户的可疑访问;

但最终我的问题还没有解决,因为我必须从荷兰的一个位置login到Gmail。

我希望这会帮助你一点! (对不起,我没有阅读电子邮件回复这个电子邮件地址)

这个错误是由于gmail更安全的function。

一旦产生这个错误…请login到您的Gmail帐户..在这里你可以find安全警报从GOOGLE..follow邮件…检查点击不太安全的select..然后再次尝试phpmailer ..

对于那些仍然无法工作的人,除了@CallMeBob提供的方法之外,请尝试以下方法。

的php.ini

  1. 转到C:\ xampp \ php ,用记事本编辑php.ini文件。
  2. 按下键盘上的CTRL + F ,在search栏上inputsendmail_path ,然后单击“ 查找下一个”两次。
  3. 现在,你应该在[mail munction]部分。

删除该行的分号: sendmail_path =“\”C:\ xampp \ sendmail \ sendmail.exe \“-t”
为这一行添加一个分号: sendmail_path =“C:\ xampp \ mailtodisk \ mailtodisk.exe”

SendMail.ini

  • 转到C:\ xampp \ sendmail ,用记事本编辑sendmail.ini文件
  • 更改以下内容:
  • smtp_server = smtp.gmail.com
  • SMTP_PORT = 465
  • auth_username=your-gmail-username@gmail.com
  • AUTH_PASSWORD =您的Gmail邮箱密码
  • force_sender=your-gmail-username@gmail.com

注意:
** smtp_port必须符合你在php代码中写的那些。
**请记住将您的gmail-username您的gmail-password更改为您正在使用的任何帐户。
**

希望这可以帮助! 🙂

如果您是G Suit用户,则可以由pipe理员解决

  1. 转到您的pipe理控制台
  2. 键入顶部search栏« 安全 »(select安全与盾牌图标)
  3. 打开基本设置
  4. 转到更安全的应用程序部分
  5. 按:转到安全性较低的应用程序的设置>>

现在select单选button之一a)禁止所有用户访问不太安全的应用程序(推荐)b)允许用户pipe理他们访问不太安全的应用程序c)为所有用户强制访问不太安全的应用程序(不推荐)

通常它不工作,因为)! 并立即开始工作与c)选项。 b) – 选项将需要GSuit中的每个用户更多的configuration

希望它有帮助