2017-03-01 2 views
2

양식을 사용하여 전자 메일을 보내려고했지만이 오류가 발생했습니다. SMTP 구성이나 관련이 있다고 생각합니다. 내 로컬 컴퓨터에서 WAMP를 사용하고 있습니다.양식 (ajax, jquery 및 PHP)을 사용하여 전자 메일 보내기

(!)


경고 : 메일() : 나는 전송에 CLIC 때이 오류가있어

& quot에서 메일 서버에 연결하는 데 실패를, 로컬 호스트 & quot; 포트 25, & "SMTP & quot; & "; smtp_port & quot; php.ini에서 설정하거나 C : \ Users \ cysca \ projects \ SiteWeb \ mailer.php에서 호출 스택 #TimeMemoryFunctionLocation 10.0012251568 {기본} ... \ mailer.php :의 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> 

아약스 :

$(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-s- f – bxN5

답변

0

문제는 당신이 메일 서버가 로컬 컴퓨터에 설치하지 않는 것이 아마도, 코드에서 문제가 아닌 여기에서 답변을 확인하십시오. Configure WAMP server to send email

+0

그래,이게 내가 생각하기에 코드가 괜찮아, 문제는 SMTP 설정 –

+0

예, php 메일러가 localhost : 25에 연결을 시도하지만 로컬로 메일 서버가 설치되지 않았기 때문입니다. 당신이 어딘가에 당신이 사용할 수있는 계정을 가지고 있거나 자신의 PC에서 메일 서버를 설정하면 php.ini 파일을 편집하고 SMTP 설정을 변경하여 다른 서버에 연결할 수 있습니다. –

+0

Perfect! 이 도구는 마술입니다! 프로덕션 서버를 위해 뭔가를 변경해야합니까? –

관련 문제