【发布时间】:2018-01-08 22:46:14
【问题描述】:
我正在尝试将测试电子邮件发送到 mailtrap.io 收件箱,但是当我打开调试时,我不断收到这些错误。以前我得到一个用户名命令失败,直到我添加了 AuthType = Login。
2017-08-01 22:34:46 SERVER -> CLIENT: 220 mailtrap.io ESMTP ready
2017-08-01 22:34:46 CLIENT -> SERVER: EHLO localhost
2017-08-01 22:34:46 SERVER -> CLIENT: 250-mailtrap.io 250-SIZE 5242880 250-PIPELINING 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250-AUTH PLAIN LOGIN CRAM-MD5 250 STARTTLS
2017-08-01 22:34:46 CLIENT -> SERVER: STARTTLS
2017-08-01 22:34:46 SERVER -> CLIENT: 220 2.0.0 Start TLS
2017-08-01 22:34:47 CLIENT -> SERVER: EHLO localhost
2017-08-01 22:34:47 SERVER -> CLIENT: 250-mailtrap.io 250-SIZE 5242880 250-PIPELINING 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 AUTH PLAIN LOGIN CRAM-MD5
2017-08-01 22:34:47 CLIENT -> SERVER: AUTH LOGIN
2017-08-01 22:34:47 SERVER -> CLIENT: 334 xxxx
2017-08-01 22:34:47 CLIENT -> SERVER: xxxxxxxxxxx=
2017-08-01 22:34:47 SERVER -> CLIENT: 334 xxxxxxxxxxxx
2017-08-01 22:34:47 CLIENT -> SERVER:
2017-08-01 22:34:50 SERVER -> CLIENT: 535 5.7.0 Invalid login or password 2017-08-01 22:34:50 SMTP ERROR: Password command failed: 535 5.7.0 Invalid login or password
2017-08-01 22:34:50 SMTP Error: Could not authenticate.
2017-08-01 22:34:50 CLIENT -> SERVER: QUIT
2017-08-01 22:34:51 SERVER -> CLIENT: 221 2.0.0 Bye
2017-08-01 22:34:51 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
这是我尝试发送电子邮件的页面上的代码。凭据存储在 Config 类中,我已经多次验证用户名和密码与邮件陷阱收件箱提供的匹配。目前端口设置为 465。我也尝试了 2525 以获得相同的结果。端口 25 只会使应用程序超时。
if(isMethod('post')) {
if (isset($_POST['email'])) {
/*********************
*configure PHPMailer*
*********************/
$mail = new PHPMailer();
$mail->AuthType = 'LOGIN';
$mail->SMTPDebug = 2;
$mail->isSMTP();
$mail->Host = Config::SMTP_HOST;
$mail->SMTPAuth = true;
$mail->Username = Config::SMTP_USER;
$mail->Passowrd = Config::SMTP_PASSWORD;
$mail->SMTPSecure = 'tls';
$mail->Port = Config::SMTP_PORT;
$mail->isHTML(true);
$mail->setFrom('myemail@gmail.com', 'My Name');
if (!getEmailDb()) {
echo (displayMessage("E-Mail does not exist.", "warning"));
}
else {
$email = getEmailDb();
$token = bin2hex(openssl_random_pseudo_bytes(50));
$mail->addAddress($email);
$mail->Subject = 'This is a test email.';
$mail->Body = 'Email body';
if($mail->send()) {
echo (displayMessage("E-Mail sent. It should show up in your inbox pretty soon.", "success"));
}
else {
echo (displayMessage("Could not send E-Mail to ".$email, "warning"));
}
}
}
}
【问题讨论】:
-
设置
$mail->SMTPDebug = 2;,这样你就可以看到服务器在说什么。 TLS 不适用于端口 465;尝试 587。另外,请阅读故障排除指南,错误消息指向您。 -
使用该端口会导致超时。 Mailtrap 说使用 25、465 或 2525 进行 SMTP 连接。我将使用端口 465 下的调试级别 2 信息编辑这篇文章。
-
也许this 可以提供帮助
-
在这种情况下,将
SMTPSecure = 'ssl'设置为Port = 465,但请注意,当Host = 'localhost'时,这极不可能正常工作。所有这些都包含在指南中。 -
所以它不喜欢您的 ID 或密码?