2017-12-04 17 views
0

私はこの質問がたくさん尋ねられていることを知っており、それらのほとんどを読んだことがあります。PHPメーラーのGmail SMTPエラー

Gmailメールアカウントを使用してPHPメーラーとWAMPサーバーを使用して電子メールを送信しようとすると、このエラーが発生します。

  1. 昨日まで問題なく(約3か月間)動作していました。
  2. 私はメーラーヘルパー機能のコードを変更していません。
  3. 私のwamp設定でphp-openssl.dllが有効になっています。
  4. sslで試しました& 465、接続しません。
  5. Googleの設定で「保護されていないアプリケーションを許可する」がオンになっています。
  6. 私はgethostbyname()を使ってみました。それは動作しません。
  7. セキュリティを使用していない組織の電子メールサーバーで動作しています。

これはphpmailerの機能コードです。すべての設定がデータベースから取得されています。それはマルチユーザアプリケーションであるためです。

// Email Settings 
    $from=$details->from; 
    $mailer=$details->mailer; 
    $subject=$details->subject; 

    $mail = new PHPMailer(true);        // Passing `true` enables exceptions 
    try { 
     //Server settings 
     $mail->SMTPDebug = $settings->debug;     // Enable verbose debug output 
     $mail->isSMTP();          // Set mailer to use SMTP 
     $mail->Host = $settings->host;   // Specify main and backup SMTP servers 
     $mail->SMTPAuth = true;         // Enable SMTP authentication 
     $mail->Username = $settings->login;      // SMTP username 
     $mail->Password = $pass;        // SMTP password 
     $mail->SMTPSecure = $settings->security;    // Enable TLS encryption, `ssl` also accepted 
     $mail->Port = $settings->port;       // TCP port to connect to 

     //From 
     $mail->setFrom($from, $mailer); 

     //Recipients 
     $mail->addAddress($details->to,$details->recipientName);  // Add a recipient   // Name is optional 
     $mail->addReplyTo($from, $mailer); 
     foreach($quote->cc as $cc) 
     { 
      $mail->addCC($cc); 
     } 
     //Attachments 
     foreach($quote->attachments as $file) 
     { 
      $mail->addAttachment($file); // Add attachments // Optional name 
     } 
     //Content 
     $mail->isHTML(true);         // Set email format to HTML 
     $mail->Subject = $subject; 
     $mail->Body = $message; 
     $mail->AltBody = 'Non-HTML Mail Clients Not Supported, Please View This email in a browser or get a HTML friendly Email Client.'; 
     $mail->send(); 
    } 
    catch (Exception $e) 
    { 
     $return=array(1,'Error: '.$mail->ErrorInfo); 
    } 
return $return; 
} 

私は取得していますエラーがすべてのヘルプは高く評価され

2017-12-04 07:15:26 SERVER -&gt; CLIENT: 220 smtp.gmail.com ESMTP w9sm23070345pfk.16 - gsmtp<br> 
2017-12-04 07:15:26 CLIENT -&gt; SERVER: EHLO projects<br> 
2017-12-04 07:15:26 SERVER -&gt; CLIENT: 250-smtp.gmail.com at your service, [49.213.37.11]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8<br> 
2017-12-04 07:15:26 CLIENT -&gt; SERVER: STARTTLS<br> 
2017-12-04 07:15:27 SERVER -&gt; CLIENT: 220 2.0.0 Ready to start TLS<br> 
SMTP Error: Could not connect to SMTP host.<br> 
2017-12-04 07:15:27 CLIENT -&gt; SERVER: QUIT<br> 
2017-12-04 07:15:27 <br> 
2017-12-04 07:15:27 <br> 
SMTP Error: Could not connect to SMTP host.<br> 
[1,"Error: SMTP Error: Could not connect to SMTP host."] 

です。

PS:smtp.gmail.com:私が使用している設定が

  1. ホストされています。
  2. ユーザー名とパスワード:私はチェックして、Gmailのウェブ上の自分のアカウントにログインできます。
  3. セキュリティ:TSL
  4. ポート:その私のコードならば、私は疑う587

。私のコードであれば、それはGmailのように洗練されていない私の組織の電子メールサーバで働いていないだろう。

答えて

1

私はあなたの質問のようなエラーが表示され、私はで私の問題を解決する:

:phpmailerの
  • から最新のコードは、いくつかのコードを追加します。apacheの

  • UpdateからextentsionのSSLを有効に

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

      );

    それは仕事です!

  • +0

    1&2完了。 3:実装するには、phpmailerのセキュリティオプションでSSLを使用する必要がありますか?またはこれはTSLでも同様に機能しますか? –

    +0

    これはTSL –

    +0

    で動作します...ありがとうございます。 :) –