PHPMailer - 无效的身份验证机制

时间:2016-05-21 22:12:17

标签: smtp phpmailer

我需要您解决我的PHPMailer设置问题:每次遇到此问题时:

在我对浏览器的回复中:

> 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用户名,密码,主机和端口设置帐户,它可以正常工作!

有人有想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的服务器的登录机制不包含默认的LOGIN类型 - 仅在SMTP功能列表中注明:

250-AUTH PLAIN

所以你需要设置:

$mail->AuthType = 'PLAIN';

请勿关闭TLS验证!

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