2017-06-20 5 views
0

フォームに正しい情報が送信されると、電子メールが送信されたことをユーザーに知らせるメッセージが表示されます。何らかの理由で、電子メールがユーザーによって受信されていません。PHPメールが正しく機能していても、実際には受信していない

私はすでにオンラインでチェックしていますが、無駄です。誰かが私にこの問題を解決するのを助けてくれますか?

以下は、HTMLフォームとPHPの両方のコードです。

<form method="POST" action="contact.php"> 
        <div class="row"> 
         <div class="col-sm-6 form-group"> 
          <input class="form-control" id="name" name="name" placeholder="Name" type="text" required> 
         </div> 
         <div class="col-sm-6 form-group"> 
          <input class="form-control" id="email" name="email" placeholder="Email" type="email" required> 
         </div> 
        </div> 
        <textarea class="form-control inputStyle" id="comments" name="comments" placeholder="Comment" rows="6" required></textarea> 
        <br> 
        <div class="row"> 
         <div class="col-sm-12 form-group"> 
          <button class="btn btn-default pull-right" name="submit" type="submit">Send</button> 
         </div> 
        </div>     

         <!-- Contacting Support Team --> 
         <?php 

          if(isset($_POST['submit'])){ 
           $email = $_POST['email']; 
           $name = $_POST['name']; 
           $comment = $_POST['comments']; 

           if(!empty($email) && !empty($name) && !empty($comment)){ 

            require 'PHPMailer-master/PHPMailerAutoload.php'; 

            $mail = new PHPMailer; 

            $mail->Host = 'ssl://smtp.gmail.com';     // Specify main and backup SMTP servers 
            $mail->Port = 465; 
            $mail->SMTPAuth = true;        // Enable SMTP authentication 
            $mail->Username = '*****';     // SMTP username 
            $mail->Password = '*****';       // SMTP password 
            $mail->SMTPSecure = 'tls';       // Enable encryption, 'ssl' also accepted 

            $mail->From = '*****';; 
            $mail->addAddress($email);       // Name is optional 
            $mail->isHTML(true);         // Set email format to HTML 

            $mail->Subject = 'Test'; 
            $mail->Body = '$comment'; 
            $mail->AltBody = '$comment'; 

            if(!$mail->send()) { 
             echo '<div class="alert alert-danger alert-dismissible" id="myAlert"> 
             <a href="#"class="close">&times;</a> 
             <strong> Email not sent </strong> Something went wrong. 
             </div>'; 

             echo 'Mailer Error: ' . $mail->ErrorInfo; 
            } else { 
             echo '<div class="alert alert-success alert-dismissible" id="myAlert"> 
             <a href="#"class="close">&times;</a> 
             <strong> Email sent!</strong> We will contact you as soon as possible. 
             </div>'; 
            } 
           } 
          } 
         ?> 
       </form>  

ありがとうございます!

+3

を使用するように変更するのいずれかは、電子メールの受信を保証するものではありません。コードが送信されている可能性がありますが、設定したメールサーバーが転送していないか、リモートメールサーバーが拒否しているか、ユーザーの迷惑メールフィルターが迷惑メールを迷惑メールフォルダに入れている可能性があります。さまざまな理由が考えられます。あなたの側から行うことができるのは、メールが正しくアドレス指定され、形成されていること、そしてメールサーバーで正しく認証されていることを確認することです。 FWIW以前は 'ssl:// ...'のようなメールホストは見たことがありません。そのようなことを伝えるいくつかの文書がありましたか? – ADyson

+0

こんにちはアディソン、はい、実際に。私はかなりしばらくインターネットで検索していましたが、そのようなコードスニペットがいくつか見つかりました。私はそれを変更しようとする必要がありますか? – user7943

+0

まず、 '$ mail-> isSMTP();'コマンドを追加して、PHPMailerがSMTPを知っていることを確認してください。また、 '$ mail-> SMTPDebug = 3;'を設定すると、PHPMailerから詳細な出力が得られます。それがうまくいかない場合は、 'ssl://'部分を失って、私をユーモアにしてみてください。 – ADyson

答えて

0

あなたは

$mail->SMTPSecure = 'tls';

が、ポート465を設定しているがGmailのSSLポートです。 587はTLSポートです。だから、スイッチポート、または電子メールを送信する

$mail->SMTPSecure = 'ssl';

関連する問題