2017-03-01 145 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

完美!这个工具很神奇!我应该在生产服务器之后改变一些东西吗? –