2017-03-01 40 views
2

フォームを使用して電子メールを送信しようとしましたが、このエラーが発生しました。SMTP設定または関連すると思います。ローカルマシンでWAMPを使用しています。フォーム(ajax、jquery、PHP)を使用して電子メールを送信

(!)


警告::メール():私は、送信時にCLICとき、私はこのエラーまし

& QUOTでメールサーバへの接続に失敗しましたが、localhostの& QUOT;ポート25、あなたの& "SMTP &"を確認してください。 & quot; smtp_port & quot; C:\ Users \ cysca \ projects \ SiteWeb \ mailer.phpのコールスタック#TimeMemoryFunctionLocation 10.0012251568 {main}()... \ mailer.php のphp.iniでの設定またはini_set()の使用0 20.0014252928http://www.php.net/function.mail 'target =' _ new '> mail()... \ mailer.php 38何かがうまくいかず、あなたのメッセージを送信できませんでした。

私のHTML:

<div class="col-sm-7 slideanim"> 
    <form id="ajax-contact" method="post" action="mailer.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" id="message" name="message" placeholder="Your messsage" rows="5"></textarea><br> 
    <div class="row"> 
     <div class="col-sm-12 form-group"> 
     <button class="btn btn-default pull-right" type="submit">Send</button> 
     <div id="form-messages"></div> 
     </div> 
    </div> 
    </form> 
</div> 

AJAX:

$(function() { 

    // Get the form. 
    var form = $('#ajax-contact'); 

    // Get the messages div. 
    var formMessages = $('#form-messages'); 

    // Set up an event listener for the contact form. 
    $(form).submit(function(e) { 
     // Stop the browser from submitting the form. 
     e.preventDefault(); 

     // Serialize the form data. 
     var formData = $(form).serialize(); 

     // Submit the form using AJAX. 
     $.ajax({ 
      type: 'POST', 
      url: $(form).attr('action'), 
      data: formData 
     }) 
     .done(function(response) { 
      // Make sure that the formMessages div has the 'success' class. 
      $(formMessages).removeClass('error'); 
      $(formMessages).addClass('success'); 

      // Set the message text. 
      $(formMessages).text(response); 

      // Clear the form. 
      $('#name').val(''); 
      $('#email').val(''); 
      $('#message').val(''); 
     }) 
     .fail(function(data) { 
      // Make sure that the formMessages div has the 'error' class. 
      $(formMessages).removeClass('success'); 
      $(formMessages).addClass('error'); 

      // Set the message text. 
      if (data.responseText !== '') { 
       $(formMessages).text(data.responseText); 
      } else { 
       $(formMessages).text('Oops! An error occured and your message could not be sent.'); 
      } 
     }); 

    }); 

}); 

PHP:

<?php 
    // My modifications to mailer script from: 
    // http://blog.teamtreehouse.com/create-ajax-contact-form 
    // Added input sanitizing to prevent injection 

    // Only process POST reqeusts. 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     // Get the form fields and remove whitespace. 
     $name = strip_tags(trim($_POST["name"])); 
       $name = str_replace(array("\r","\n"),array(" "," "),$name); 
     $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 
     $message = trim($_POST["message"]); 

     // Check that data was sent to the mailer. 
     if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      // Set a 400 (bad request) response code and exit. 
      http_response_code(400); 
      echo "There was a problem with your submission. Please complete the form and try again."; 
      exit; 
     } 

     // Set the recipient email address. 
     // FIXME: Update this to your desired email address. 
     $recipient = "[email protected]"; 

     // Set the email subject. 
     $subject = "New contact from $name"; 

     // Build the email content. 
     $email_content = "Name: $name\n"; 
     $email_content .= "Email: $email\n\n"; 
     $email_content .= "Message:\n$message\n"; 

     // Build the email headers. 
     $email_headers = "From: $name <$email>"; 

     // Send the email. 
     if (mail($recipient, $subject, $email_content, $email_headers)) { 
      // Set a 200 (okay) response code. 
      http_response_code(200); 
      echo "Thank You! Your message has been sent."; 
     } else { 
      // Set a 500 (internal server error) response code. 
      http_response_code(500); 
      echo "Something went wrong and we couldn't send your message."; 
     } 

    } else { 
     // Not a POST request, set a 403 (forbidden) response code. 
     http_response_code(403); 
     echo "There was a problem with your submission, please try again."; 
    } 

?> 
+1

http://stackoverflow.com/questions/22396721/how-to-send-email-from-localhost-wamp-server-to-send-email-gmail-hotmail-or-so- f – bxN5

答えて

0

あなたの問題はあなたがメールサーバがローカルマシンにインストールされていないことが考えられ、あなたのコードで問題の代わりに。ここで回答を確認してくださいConfigure WAMP server to send email

+0

これは私の考えです。コードは問題ありません。問題はSMTP設定です。 –

+0

はい、phpメーラーはlocalhost:25に接続しようとしていますが、メールサーバーはローカルにインストールされていません。あなたはどこかであなたが使うことができるアカウントを持っているか、自分のPCでメールサーバを設定すれば、php.iniファイルを編集してSMTP設定を変更して他のサーバに接続することができます。 –

+0

パーフェクト!このツールは魔法です!運用サーバーで何か変更する必要がありますか? –

関連する問題