2014-12-13 5 views
2

Я загрузил шаблон сайта Bootstrap и пытаюсь сделать форму, которая отправляется на мой адрес электронной почты. Он дает сообщение, что все отправляется, когда все комментарии заполняются, но фактическое сообщение не отправляется.HTML Email Form Not Sending Message

Вот фрагмент из HTML из индекса:

<section id="contact"> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-lg-12 text-center"> 
       <h2>Contact Us</h2> 
       <hr class="star-primary"> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-lg-8 col-lg-offset-2"> 
       <!-- To configure the contact form email address, go to mail/contact_me.php and update the email address in the PHP file on line 19. --> 
       <!-- The form should work on most web servers, but if the form is not working you may need to configure your web server differently. --> 
       <form name="sentMessage" id="contactForm" novalidate> 
        <div class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label>Name</label> 
          <input type="text" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name."> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <div class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label>Email Address</label> 
          <input type="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address."> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <div class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label>Phone Number</label> 
          <input type="tel" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number."> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <div class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label>Message</label> 
          <textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <br> 
        <div id="success"></div> 
        <div class="row"> 
         <div class="form-group col-xs-12"> 
          <button type="submit" class="btn btn-success btn-lg" action="public_html/mail/contact_me.php">Send</button> 
         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 
</section> 

Вот код из файла PHP:

<?php 
// Check for empty fields 
if(empty($_POST['name'])  || 
    empty($_POST['email'])  || 
    empty($_POST['phone'])  || 
    empty($_POST['message']) || 
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) 
    { 
    echo "No arguments Provided!"; 
    return false; 
    } 

$name = $_POST['name']; 
$email_address = $_POST['email']; 
$phone = $_POST['phone']; 
$message = $_POST['message']; 

// Create the email and send the message 
$to = '[email protected]'; // Add your email address inbetween the '' replacing    
[email protected] - This is where the form will send a message to. 
$email_subject = "Website Contact Form: $name"; 
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the   
details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message"; 
$headers = "From: [email protected]\n"; // This is the email address the generated message will  
be from. We recommend using something like [email protected] 
$headers .= "Reply-To: $email_address"; 
mail($to,$email_subject,$email_body,$headers); 
return true;    
?> 

Пожалуйста, помогите!

Спасибо заранее

+1

Из того, что я вижу, ваши входы формы не имеют имен. – Rasclatt

+0

Кроме того, вы проверяете '$ _POST', но вы, вероятно, выполняете' $ _GET' – Rasclatt

ответ

1

Ваша форма не имеет какого-либо метода, поэтому вероятно, что это делает $_GET вместо $_POST:

<form name="sentMessage" id="contactForm" novalidate method="post" action="public_html/mail/contact_me.php"> 

У вас нет имен (name="") на ваших входов:

<input name="email" type="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address."> 

Кроме того, вы можете немного улучшить свой скрипт:

function Validate() 
    { 
     // Check for empty fields 
     if(empty($_POST['name'])   || 
       empty($_POST['email'])  || 
       empty($_POST['phone'])  || 
       empty($_POST['message']) || 
       !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) { 

       return false; 
      } 
     else 
      return true; 
    } 

function SendEmail($to = '[email protected]') 
    { 
     if(Validate() == true) { 
       $name   = $_POST['name']; 
       $email_address = $_POST['email']; 
       $phone   = $_POST['phone']; 
       $message  = $_POST['message']; 

       // Create the email and send the message 
       $email_subject = "Website Contact Form: $name"; 
       $email_body  = "You have received a new message from your website contact form.\n\n"."Here are the   
       details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message"; 
       $headers  = "From: [email protected]\n"; 
       $headers  .= "Reply-To: $email_address"; 
       // Send true on successful send. 
       // Send false if failed 
       return (mail($to,$email_subject,$email_body,$headers))? true: false; 
      } 
     else 
      // Invalid inputs 
      return 'err'; 
    } 

    // Apply function(s). You will get true, false, or err 
    $send = SendEmail(); 

    // On return, you can echo any result 
    if($send == 'err') 
     echo 'Invalid Fields.'; 
    elseif($send == false) 
     echo 'An Error Occurred.'; 
    else 
     echo 'Email Sent Successfully.'; 
0

Вы действительно уверены, что это ваш php-файл? Я бы переместил action="public_html/mail/contact_me.php на вашу кнопку до отметки form.

Вы также можете поместить некоторый код «отладки» в различные моменты php-файла, чтобы помочь устранить неполадки.

Функция mail() не может быть включена на вашем сервере хостинга, например. Вы можете поместить console.log('About to send email') непосредственно перед почтовой линией и console.log('Mail sent') сразу после почтовой линии. Это будет показано, например, в файле Firebug и поможет вам увидеть, работает ли скрипт правильно.

Вы также сказали, что заявили, что он был успешно отправлен, но я не вижу никакого кода, который выводит сообщение об успешном завершении. Можете ли вы более четко узнать, как вас уведомляют о том, что он «успешный»?

0

попробовать сделать это <form name="sentMessage" id="contactForm" method='post' action='public_html/mail/contact_me.php' novalidate><form> Примечание: $_POST['name'] не будет работать, если входные поля не имеют name='email'

0

Поместите назначения в виде тега.

<form action='contact_me.php'> 
<input type='submit'>