2015-09-21 14 views
5

phpmailerのは、私は以下のスクリプトを持って提供することを例に基づいて、phpmailerの - OpenSSLのエラー

date_default_timezone_set('Etc/UTC'); 
require './PHPMailerAutoload.php'; 
$mail = new PHPMailer; 
$mail->isSMTP(); 
$mail->SMTPDebug = 2; 
$mail->Debugoutput = 'html'; 
$mail->Host = 'smtp.gmail.com'; 
$mail->Port = 587; 
$mail->SMTPSecure = 'tls'; 
$mail->SMTPAuth = true; 
$mail->Username = "[email protected]"; 
$mail->Password = "********"; 
$mail->setFrom('[email protected]', 'First Last'); 
$mail->addReplyTo('[email protected]', 'First Last'); 
$mail->addAddress('[email protected]', 'first last'); 
$mail->Subject = 'PHPMailer GMail SMTP test'; 
$mail->Body = "example"; 
$mail->AltBody = 'This is a plain-text message body'; 

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

それは元の例とまったく同じであっても、私はそれを動作させることはできません。

iが取得エラー

警告:stream_socket_enable_crypto():エラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE:証明書はは/ opt/LAMPPに失敗しベリファイをSSL操作はコード1のOpenSSLエラーメッセージで失敗しました/htdocs/webmail_client_practise/class.smtp.php on line 344 SMTPエラー:SMTPホストに接続できませんでした。

注意:php.iniファイルのOpenSSL拡張機能は既に開かれています。

答えて

19

PHP 5.6を実行していて証明書を確認していますが、サーバーが無効な証明書を提示していて失敗しているためです。 PHPMailerとPHPの両方が、彼らがしていることで正しいです - コードは間違っていません。あなたのメールサーバーを修正する、またはである、それはthe troubleshooting guideに示唆して何ができるのいずれか:

$mail->SMTPOptions = array(
    'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'allow_self_signed' => true 
    ) 
); 

を、ガイドが言うように、あなたがに持っていない限り、あなたがこれを行うべきではない - それはあなたのセキュリティを損なうことです。

+0

今すぐすべての意味があります!ありがとうシンクロ! – Makis

+0

ありがとうございます。私の場合、これはトリックでした。 – Blair

+1

これが助けになりました。ありがとう:) – Ali