2016-04-07 17 views
3

以下は、PHPMailerを使用してメールを送信する際にエラーが表示されるためのコードです。PHPMailer経由で電子メールを送信中に認証エラーが発生しました

public function changePassword(){ 
    if($this->request->is('post')){ 
    require_once(ROOT .DS. 'vendor' . DS . 'PHPMailer' . DS . 'class.phpmailer.php'); 
    $email = '[email protected]'; 
    $mail = new PHPMailer(); // create a new object 
    $mail->IsSMTP(); // enable SMTP 
    $mail->isHTML(true); 
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only 
    $mail->SMTPAuth = true; // authentication enabled 
    $mail->SMTPSecure = 'TLS'; // secure transfer enabled REQUIRED for Gmail 
    $mail->Host = "smtp.gmail.com"; 
    $mail->Port = 587; // or 587 
    $mail->IsHTML(true); 
    $mail->Username = "[email protected]"; 
    $mail->Password = "dead_gone"; 
    $mail->SetFrom("[email protected]"); 
    $mail->AddAddress($email); 
    $mail->Subject = "password recovery"; 
    $mail->Body = "your password is:- sdx_12345 click here to log in <a href ='http://localhost/cake/logins'> click here </a> "; 

    if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
    } else { 
     echo "mail sent"; 
    } 
} 

}

ERROR:

SMTP -> ERROR: AUTH not accepted from server: 530 5.7.0 Must issue a STARTTLS command first. v3sm8416695par.17 - gsmtp SMTP Error: Could not authenticate. Mailer Error: SMTP Error: Could not authenticate.

答えて

1

このプロパティは、大文字と小文字が区別されます:

$mail->SMTPSecure = 'tls' 

あなたがthe gmail example provided with PHPMailerにあなたのコードをベース場合、それが役立つだろう - あなたがGmailに接続するために最初だかのようにそうではありません!

+0

これは、セキュリティの弱いアプリケーションのGmailへのアクセスを許可するオプションをオンにして解決しました。 –

+0

これは非連続的です。安全性の低いアプリのアクセスを有効にすると、「STARTTLSを発行する必要があります」という問題は解決しません。 [PHPMailer docs](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting)に記載されているように、まったく別の問題を解決するかもしれませんが、それはあなたが尋ねた質問ではありません。 – Synchro

+0

TLSをTLSに変更した後、不正アクセスのエラーが発生しました。 –

0

は、ポート465経由でSSL接続を試してみて、あなたの中にあなたのセキュリティ設定を見てまた入れなければならないグーグル

+0

いいえ、しないでください。 SSLの465は1998年以来廃止されています。 – Synchro

-2

からアカウント

$mail->IsHTML(true); 

身体と添付ファイルを設定した後。

編集:

TLSは小文字である必要があります。

+0

$ mail-> IsHTML(true)のため投票が中止されました。機能の本体に既にあり、質問はhtmlの設定に関するものではありません。 –

+0

はい、間違った場所にあります。彼は問題を避けるために$ mail-> Body()メソッドの下でそれを設定しなければなりません。 http://stackoverflow.com/a/16256464/5230497を参照してください。それはまた勧告です。 – Noneatme

+0

どこに設定しても問題ありません。一度は十分です、前には大丈夫です。 – Synchro

関連する問題