PHPMailer - 无效的身份验证机制

PHPMailer - Invalid authentication mechanism

我需要你解决我的 PHP 邮件程序设置的问题:每次我遇到这个问题时:


在我的浏览器回复中:

> 2016-05-21 21:39:01   SERVER -> CLIENT: 220 *****.*****.com ESMTP Postfix
2016-05-21 21:39:01 CLIENT -> SERVER: EHLO www.mysite.fr
2016-05-21 21:39:01 SERVER -> CLIENT: ***.***.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
2016-05-21 21:39:01 CLIENT -> SERVER: STARTTLS
2016-05-21 21:39:01 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2016-05-21 21:39:01 CLIENT -> SERVER: EHLO www.mysite.fr
2016-05-21 21:39:01 SERVER -> CLIENT: *****.*****.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
2016-05-21 21:39:01 CLIENT -> SERVER: AUTH LOGIN
2016-05-21 21:39:01 SERVER -> CLIENT: 535 5.7.8 Error: authentication failed: Invalid authentication mechanism
2016-05-21 21:39:01 SMTP ERROR: AUTH command failed: 535 5.7.8 Error: authentication failed: Invalid authentication mechanism
2016-05-21 21:39:01 CLIENT -> SERVER: RSET
2016-05-21 21:39:01 SERVER -> CLIENT: 250 2.0.0 Ok
2016-05-21 21:39:01 CLIENT -> SERVER: MAIL FROM:<root@localhost>
2016-05-21 21:39:01 SERVER -> CLIENT: 250 2.1.0 Ok
2016-05-21 21:39:01 CLIENT -> SERVER: RCPT TO:<myname@domain.com>
2016-05-21 21:39:01 SERVER -> CLIENT: 554 5.7.1 <myname@domain.com>: Relay access denied
2016-05-21 21:39:01 SMTP ERROR: RCPT TO  command failed: 554 5.7.1 <myname@domain.com>: Relay access denied
2016-05-21 21:39:01 CLIENT -> SERVER: RCPT TO:<othername@domain.com>
2016-05-21 21:39:01 SERVER -> CLIENT: 554 5.7.1 <othername@domain.com>: Relay access denied
2016-05-21 21:39:01 SMTP ERROR: RCPT TO  command failed: 554 5.7.1 <othername@domain.com>: Relay access denied
SMTP Error: The following recipients failed: myname@domain.com, othername@domain.com
{"actif":0,"result":"activ\u00e9","retour":4}2016-05-21 21:39:01    CLIENT -> SERVER: QUIT
2016-05-21 21:39:01 SERVER -> CLIENT: 221 2.0.0 Bye

这是我的 PHP 设置:

        $mail = new PHPMailer;
$mail->IsSMTP();
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->CharSet    = 'UTF-8';
$mail->SMTPSecure = 'tls';
$mail->Host = "mail.host.com";
$mail->Port = 587;
$mail->Username = "username@mydomain.fr";
$mail->Password = "mySMTPPassword";
$mail->addAddress('myname@domain.com');               // Name is optional
$mail->AddCC('othername@domain.com');
$mail->isHTML(true);
$mail->Subject = 'Here is the subject ';
$mail->Body    = $messageactif;

if(!$mail->send()) {
    $data['return'] = 4;
    echo json_encode($data);
    die();
} else {
    $data["return"] = 1;
}

我不明白为什么我得到一个无效的身份验证机制。

我试着用 Thunderbord 和这些 SMTP 用户名、密码、主机和端口设置一个帐户,它成功了!

有人有想法吗?

谢谢!

您的服务器的登录机制不包括默认的 LOGIN 类型 - 注意 SMTP 功能列表中它只说:

250-AUTH PLAIN

所以你需要设置:

$mail->AuthType = 'PLAIN';

不要关闭TLS验证!

您收到 relay access denied 错误是因为它继续尝试发送给其他收件人,即使您没有通过身份验证,而且您通常不能通过服务器发送(即 'relay') 没有身份验证,否则你将成为开放中继,这是一件坏事。这与端口或安全设置无关。 PHPMailer 在验证失败后不退出可能是一个错误。