web-dev-qa-db-ja.com

PhpMailer SMTP通知:EOF=接続されているかどうかを確認中にキャッチ

PhpMailerで問題が発生しました。メールを送信できません。このエラーが表示されます。

2016-03-03 21:32:09 SERVER -> CLIENT: 2016-03-03 21:32:09 SMTP NOTICE: EOF caught while checking if connected 2016-03-03 21:32:09 SMTP Error: Could not authenticate. 2016-03-03 21:32:09 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Erreur : SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting 

これは私のコードです:

<?php require('phpmailer/PHPMailerAutoload.php'); 
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = 'ssl://smtp.gmail.com';
$mail->SMTPAuth= true;
$mail->Username='[email protected]';
$mail->Password='passwordgmail';
$mail->Port = 587; 
$mail->SMTPDebug = 2; 
$mail->SMTPSecure = 'ssl';
$mail->SetFrom('[email protected]', 'Name');
$mail->AddAddress('[email protected]', 'HisName');
$mail->Subject = 'Subject';
$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail    clients";
if(!$mail->Send()) {
echo 'Error : ' . $mail->ErrorInfo;
} else {
    echo 'Ok!!';
  } 
?>

私が見つけたすべての答えを試しましたが、それらのどれも今のところうまくいきませんでした。他のポートも試してみましたが、25と465は機能せず、他のエラーも発生します。誰かが私を助けてくれるとしたら、それは本当にいいです=)。ありがとうございました

10
Max G

SMTPSecure = 'ssl'Port = 587を使用しています。それは機能しません。 ssl/465またはtls/587;を使用します。それらを混同しないでください。これ(および他の多くの問題)は、エラーメッセージのリンク先のトラブルシューティングガイドで説明されています。

また、Host値のssl:プレフィックスはSMTPSecureの値をオーバーライドするため、そこから削除することをお勧めします。

24
Synchro
require('phpmailer/PHPMailerAutoload.php'); 
$mail = new PHPMailer();
$mail->IsSMTP(true);
$mail->Host = 'smtp.gmail.com'; // not ssl://smtp.gmail.com
$mail->SMTPAuth= true;
$mail->Username='[email protected]';
$mail->Password='passwordgmail';
$mail->Port = 465; // not 587 for ssl 
$mail->SMTPDebug = 2; 
$mail->SMTPSecure = 'ssl';
$mail->SetFrom('[email protected]', 'Name');
$mail->AddAddress('[email protected]', 'HisName');
$mail->Subject = 'Subject';
$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail    clients";
if(!$mail->Send()) {
echo 'Error : ' . $mail->ErrorInfo;
} else {
    echo 'Ok!!';
} 

https://www.google.com/settings/u/0/security/lesssecureapps これを有効にする

1
Justin J