2017-03-01 61 views
2

我試圖發送電子郵件使用表單,但我得到了這個錯誤,我認爲這是SMTP配置或相關的東西,我在我的本地機器使用WAMP使用表單發送電子郵件(ajax,jquery和PHP)

當我發送CLIC我得到這個錯誤:


警告:電子郵件():(!)無法連接在& QUOT到郵件服務器;本地主機& QUOT;端口25,驗證您的&「SMTP & quot;和「&」; smtp_port &「在php.ini中設置或在C:\ Users \ cysca \ projects \ SiteWeb \ mailer.php中使用ini_set()行調用堆棧#TimeMemoryFunctionLocation 10.0012251568 {main}()... \ mailer.php 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郵件試圖連接到本地主機:25,但你沒有安裝本地郵件服務器。您可以編輯php.ini文件並更改SMTP設置以連接到其他服務器,如果您有一個可以使用的帳戶,或者在您自己的電腦上設置郵件服務器 –

+0

完美!這個工具很神奇!我應該在生產服務器之後改變一些東西嗎? –