php - 无法使用 PHPMailer 和 Mailtrap 发送邮件

标签 php mysql email phpmailer

我正在尝试向 mailtrap.io 收件箱发送一封测试电子邮件,但当我打开调试时,我不断收到这些错误。以前,在添加 AuthType = Login 之前,我收到的 Username 命令失败。

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 类中,我已经多次验证用户名和密码与 mailtrap 收件箱提供的相匹配。当前端口设置为 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"));
            }
        }
    }

最佳答案

发现问题。你不能在没有设置任何类型的 SMTP 服务器的情况下从本地主机发送邮件,这就是我收到错误的原因。对于将来遇到此问题的任何人,Windows 版 Papercut 可用于测试本地计算机上的邮件发送。

关于php - 无法使用 PHPMailer 和 Mailtrap 发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45448464/

相关文章:

PHP 向服务器发送空表单值

php - 验证 $_REQUEST 内容是否为 int

mysql - 将 .NET 应用程序连接到 MySQL

php - PDO 列名称出现在 fetchAll 之后的类中

mysql - 使用 str_replace 将 {name} 替换为人名

php - Codeigniter - 只允许特定用户编辑/删除帖子

PHP 回显多个 div 类

Mysql - 基于另一列值的单个列中的多个唯一集

c++ - 重命名可执行文件会导致运行时出错

php - 使用 Zend Framework 从 1and1 smtp 服务器发送电子邮件