PHPMailer 身份验证问题


PHPMailer authentication issue

我不知道我做错了什么或发生了什么,但我对发生的事情完全感到困惑。 由于某种原因,我为弹出>授权传递的完全相同的登录信息在SMTP级别被拒绝?

这是我的连接代码

$username = 'matt@mydomain.com';
$password = 'mypass';
$server = 'mail.mydomain.com';
$pop = new POP3();
$pop->Authorise($server, 110, 30, $username, $password, 1);

$mail = new PHPMailer;
$mail->SMTPDebug = 2;                               // Enable verbose debug output
echo "starting mailer..<br/>";
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = $server;  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';                               // Enable SMTP authentication
$mail->Username = $username;                 // SMTP username
$mail->Password = $password;                           // SMTP password
$mail->Port = 587;                                    // TCP port to connect to
$mail->setFrom('matt@mydomain.com', 'Mailer');
$mail->addAddress('myemail@gmail.com', 'Joe User');     // Add a recipient
$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';
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

这是结果...

Server -> Client: +OK POP3 server ready <836f3c81-e565-4afd-9a31-4517bd9d6ce4@m04.internetmailserver.net> Server -> Client: +OK User:'matt@surefiretaxes.com' ok Server -> Client: +OK Password ok 

以上表明,使用 POP 登录明确接受了它

2016-02-12 16:38:05 SERVER -> CLIENT: 220-a2ls11.hosting.com ESMTP Exim 4.85 #2 Fri, 12 Feb 2016 11:38:05 -0500 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail.
2016-02-12 16:38:05 CLIENT -> SERVER: EHLO mydomain.com
2016-02-12 16:38:05 SERVER -> CLIENT: 250-a2ls11.hosting.com Hello a2ls11.hosting.com [75.98.175.122] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250-STARTTLS 250 HELP
2016-02-12 16:38:05 CLIENT -> SERVER: STARTTLS
2016-02-12 16:38:05 SERVER -> CLIENT: 220 TLS go ahead
2016-02-12 16:38:05 CLIENT -> SERVER: EHLO mydomain.com
2016-02-12 16:38:05 SERVER -> CLIENT: 250-a2ls11.hosting.com Hello a2ls11.hosting.com [75.98.175.122] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-AUTH PLAIN LOGIN 250 HELP
2016-02-12 16:38:05 CLIENT -> SERVER: AUTH LOGIN
2016-02-12 16:38:09 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2016-02-12 16:38:09 CLIENT -> SERVER: xxx
2016-02-12 16:38:09 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2016-02-12 16:38:09 CLIENT -> SERVER: yyy
2016-02-12 16:38:11 SERVER -> CLIENT: 535 Incorrect authentication data
2016-02-12 16:38:11 SMTP ERROR: Password command failed: 535 Incorrect authentication data
2016-02-12 16:38:11 SMTP Error: Could not authenticate. 2016-02-12 16:38:11 CLIENT -> SERVER: QUIT
2016-02-12 16:38:11 SERVER -> CLIENT: 221 a2ls11.hosting.com closing connection
2016-02-12 16:38:11 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

的意思是我做错了什么? 我只是一辈子都无法理解。 我什至尝试过有和没有SMTPSecure。 我尝试了端口 25 而不是 587,但是端口 587 与我在 Outlook 中使用的端口完全相同。 我被难住了。

显然,问题在于我所在的主机实际上不允许连接到外部SMTP服务器。 疯狂的是,我没有从日志中得到如上所示的错误,它的行为就像登录信息不正确一样。 我通过将此信息完全上传到另一台服务器上来验证这种情况,并且它工作正常。