简体   繁体   English

为什么我在尝试发送 email 时使用 phpmailer 收到此错误?

[英]Why do I get this error with phpmailer when trying to send an email?

Error:错误:

2021-03-19 15:17:50 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP t24sm3903607qto.23 - gsmtp
2021-03-19 15:17:50 CLIENT -> SERVER: EHLO localhost
2021-03-19 15:17:50 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [24.233.165.10]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2021-03-19 15:17:50 CLIENT -> SERVER: STARTTLS
2021-03-19 15:17:50 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2021-03-19 15:17:50 CLIENT -> SERVER: EHLO localhost
2021-03-19 15:17:50 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [24.233.165.10]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2021-03-19 15:17:50 CLIENT -> SERVER: AUTH LOGIN
2021-03-19 15:17:50 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2021-03-19 15:17:50 CLIENT -> SERVER: [credentials hidden]
2021-03-19 15:17:50 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2021-03-19 15:17:50 CLIENT -> SERVER: [credentials hidden]
2021-03-19 15:17:51 SERVER -> CLIENT: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials t24sm3903607qto.23 - gsmtp
2021-03-19 15:17:51 SMTP ERROR: Password command failed: 535-5.7.8 Username and Password not accepted. Learn more at535 5.7.8 https://support.google.com/mail/?p=BadCredentials t24sm3903607qto.23 - gsmtp
SMTP Error: Could not authenticate.
2021-03-19 15:17:51 CLIENT -> SERVER: QUIT
2021-03-19 15:17:51 SERVER -> CLIENT: 221 2.0.0 closing connection t24sm3903607qto.23 - gsmtp
SMTP Error: Could not authenticate.
Message could not be sent. Mailer Error: SMTP Error: Could not authenticate.

My Code:我的代码:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
 
require 'PHPMailer/PHPMailer/src/Exception.php';
require 'PHPMailer/PHPMailer/src/PHPMailer.php';
require 'PHPMailer/PHPMailer/src/SMTP.php';
 
// Instantiation and passing [ICODE]true[/ICODE] enables exceptions
$mail = new PHPMailer(true);
 
try {
    //Server settings
    $mail->SMTPDebug = 2;                                       // Enable verbose debug output
    $mail->isSMTP();                                            // Set mailer to use SMTP
    $mail->Host       = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    $mail->Username   = 'myemail@gmail.com';                     // SMTP username
    $mail->Password   = '*************';                               // SMTP password
    $mail->SMTPSecure = 'tls';                                  // Enable TLS encryption, [ICODE]ssl[/ICODE] also accepted
    $mail->Port       = 587;                                    // TCP port to connect to
 
    //Recipients
    $mail->setFrom('myemail.com', 'Mailer');
    $mail->addAddress('myemail@gmail.com', 'Recipients');     // Add a recipient
    //$mail->addAddress('');
    $mail->addReplyTo('myemai@gmail.com', 'Mailer');
    //$mail->addCC('');
    //$mail->addBCC('');
 
    // Attachments
    //$mail->addAttachment('');         // Add attachments
    //$mail->addAttachment('');
 
    // Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
 
    $mail->send();
    echo 'Message has been sent';
 
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

I have less secure apps enabled.我启用了不太安全的应用程序。 I have IMAP enabled.我启用了 IMAP。 Two step verification off.两步验证关闭。 I downloaded the latest version from github.我从 github 下载了最新版本。 The email is my email and does work. email 是我的 email 并且确实有效。 What should I do?我应该怎么办? I am trying this from my localhost on xampp.我正在 xampp 上的本地主机上尝试这个。 My password is correct.我的密码是正确的。 Why does this happen?为什么会这样?

不太安全的应用程序

You edited your question several times, each time changing its meaning, that should be avoided in future as it generates tones of comments.您多次编辑了您的问题,每次都改变了它的含义,以后应该避免这种情况,因为它会产生大量的评论。 Instead next time pls, read error messages and fix them before asking.相反,下次请阅读错误消息并在询问之前修复它们。 What you did wrong (in order of appearance)你做错了什么(按出场顺序)

  1. Don't use assigning methods without values just for future like $mail->addAddress('');不要只为将来使用没有值的分配方法,例如$mail->addAddress(''); , $mail->addCC('') , etc, it will cause errors. , $mail->addCC('')等,会导致错误。
  2. Use proper SMTP server address.使用正确的 SMTP 服务器地址。
  3. Use proper credentials.使用正确的凭据。 Of course login and password are case sensitive.当然,登录名和密码区分大小写的。
  4. Turn ON 'Less secure applications' on your Gmail account if still have problem with credentials errors.如果仍然存在凭据错误问题,请在您的 Gmail 帐户上打开“不太安全的应用程序”。 It can be done at the security tab as shown at screenshot可以在安全选项卡中完成,如屏幕截图所示

在您的帐户中打开不太安全的应用程序

It's this typo:就是这个错别字:

$mail->Host       = 'smpt.gmail.com';

That should be:那应该是:

$mail->Host       = 'smtp.gmail.com';

The error message itself says that the host name could not be found, which is entirely expected given that it's wrong.错误消息本身表示找不到主机名,这是完全可以预料的,因为它是错误的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM