2017-08-01 1 views
2

mailtrap.io受信箱にテスト用電子メールを送信しようとしていますが、デバッグをオンにするとこれらのエラーが発生します。以前は、AuthType = Loginを追加するまで、Usernameコマンドが失敗しました。PHPMailerとMailtrapでメールを送信できません

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('[email protected]', '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")); 
      } 
     } 
    } 

}

+0

'$ mail-> SMTPDebug = 2; 'を設定すると、サーバが何を言っているのかを見ることができます。 TLSはポート465では動作しません。 587を試してください。また、エラーメッセージで指摘しているトラブルシューティングガイドをお読みください。 – Synchro

+0

そのポートを使用するとタイムアウトになります。 Mailtrapは、SMTP接続に25,465、または2525を使用すると言います。私はこの記事をポート465でデバッグレベル2の情報で編集します。 – SolidSnackDrive

+0

多分[this](https://stackoverflow.com/a/25670661/2917673)助けてもらえます – Yolo

答えて

0

。あなたはどんな種類のSMTPサーバも設定されていない状態でローカルホストからメールを送ることはできません。そのため、私はエラーが発生しています。将来的にこの問題を抱える人にとっては、Windows用のPapercutを使用して、ローカルマシン上のメール送信をテストすることができます。

関連する問題