2014-10-08 4 views
1

У меня есть html-форма, в которой пользователи отправят свою контактную информацию для нас, чтобы связаться с ними. Я хотел бы, чтобы все это живое на index.html, но я не против создания другого файла в папке.Получение html-формы на отправке электронной почты с помощью PHP

<form class="row" method="post" action="contact.php"> 
    <div class="col-md-12"> 
     <div class="form-group"> 
      <input type="text" class="form-control" placeholder="Your Full Name"> 
     </div> 
     <div class="form-group"> 
      <input type="text" class="form-control" placeholder="Phone Number*"> 
     </div> 
     <div class="form-group"> 
      <input type="text" class="form-control" placeholder="Email Address*"> 
     </div> 
     <div class="form-group"> 
      <input type="text" class="form-control" placeholder="Company Name*"> 
     </div> 
     <div class="form-group"> 
      <textarea class="form-control lg_textarea" placeholder="Questions/comments"></textarea> 
     </div> 
    </div> 

    <div class="buttn_outer"> 
     <button type="submit" class="btn signin_btn col-sm-5 clearfix" style="margin:0 0 0 4%; float: left;">Submit</button> 
    </div> 
</form> 

У меня был установлен php на серверной машине. Если посмотреть на другие примеры, я нашел попытку использовать скрипт php следующим образом.

<?php 

if($_POST["submit"]) { 
    $recipient = "[email protected]"; 
    $subject = "Some Message subject"; 
    $sender = $_POST["sender"]; 
    $senderEmail = $_POST["senderEmail"]; 
    $message = $_POST["message"]; 

    $mailBody = "Name: ".$sender."\nEmail: ".$senderEmail."\n\n".$message; 

    mail($recipient, $subject, $mailBody, "From: ".$sender." <".$senderemail.">"); 
    $thankYou = "<p>Thank you! Your message has been sent.</p>"; 
} 
?> 

На данный момент это относится к сообщению об успешной работе, однако я никогда не получаю ничего, чтобы перейти к моей электронной почте. Я чрезвычайно новичок в php, любая помощь/советы приветствуются.

+0

ли в _locahost_? Вы не можете отправлять электронную почту от _locahost_. – edCoder

+0

Уверен, что если у localhost установлен реле smtp, то я не понимаю, что он сделан. – airtech

+0

Помимо решения проблемы с php - вы подтвердили, что можете отправить тестовое письмо напрямую - по почте («[email protected]», «Test», «Body»)? – airtech

ответ

2

Ни одно из ваших полей ввода не имеет атрибутов имени.

<input type="text" class="form-control" placeholder="Email Address*"> 
<input type="text" class="form-control" placeholder="Your Full Name"> 
<textarea class="form-control lg_textarea" placeholder="Questions/comments"></textarea> 

Должно быть

<input type="text" class="form-control" name="senderEmail" placeholder="Email Address*"> 
<input type="text" class="form-control" name="sender" placeholder="Your Full Name"> 
<textarea class="form-control lg_textarea" name="message" placeholder="Questions/comments"></textarea> 

В основном, имя атрибута поля ввода должны соответствовать тому, что ключ $_POST есть.

Так, <input name="name" /> будет обрабатываться как $_POST['name']

Кроме того, это выглядит, как вы перепутать $recipient и $senderEmail переменные. PHP mail function указывает, что первым параметром является получатель. Я понимаю, что [email protected] явно не настоящий адрес электронной почты. Но получателем должен быть адрес электронной почты пользователя, который он подал в форме. Убедитесь, что функция почты работает, протестировав ее, не отправляя форму, и если это так, попробуйте заставить ее работать с переменными формы.

0

Другие вещи, я бы бросить в

($_POST["submit"]) должен быть изменен на

!empty($_POST["submit"]) - или - isset($_POST["submit"])

Никогда не полагайтесь переменная установлена ​​- не запускать любые тесты на нем или использовать его значение, пока вы не проверите, установлено ли оно (или вы сами его инициализируете).

В зависимости от вашей конфигурации PHP эта строка может выйти из строя. Поэтому, если вы переместите вашу страницу contact.php на другой сервер, а затем он может сбой с ошибками.

Как упоминалось в Lance, для каждого поля формы, которое требуется передать обратно на сервер, требуется атрибут имени. Это то, что связывает его с массивом $_POST, когда оно передается на сервер.

Кроме того, вы можете использовать адрес электронной почты пользователей как адрес отправителя. Тем не менее, ваш адрес электронной почты, скорее всего, будет помечен как спам, когда принимающий сервер увидит, что он не был создан с сервера электронной почты домена этого пользователя. Вам придется поиграть с настройками электронной почты своего сервера, чтобы вы аутентифицировали его как законный из адреса, если вы пытаетесь «обмануть» его (иначе говоря, не использовать по умолчанию сервер).

Если вы хотите переопределить значение по умолчанию от адреса (или ответить на адрес), вам нужно сделать это в полях заголовка (вы можете отправить этот вариант Google, чтобы увидеть ваши варианты).

Если вы хотите включить HTML-теги или элементы в свой HTML, вам также необходимо указать это в параметре headers функции почты. Для простого оповещения электронной почты, например, о том, что вы делаете, я просто использую простой текст и использую возврат каретки (например, у вас есть \n) и не используйте такие элементы, как <p></p>.

0

Попробуйте это может помочь вам ...

index.html 

<form class="row" method="post" action="contact.php"> 
     <div class="col-md-12"> 
      <div class="form-group"> 
       <input type="text" class="form-control" name="sender" placeholder="Your Full Name"> 
      </div> 
      <div class="form-group"> 
       <input type="text" class="form-control" name="phno" placeholder="Phone Number*"> 
      </div> 
      <div class="form-group"> 
       <input type="text" class="form-control" name="email" placeholder="Email Address*"> 
      </div> 
      <div class="form-group"> 
       <input type="text" class="form-control" name="cmp" placeholder="Company Name*"> 
      </div> 
      <div class="form-group"> 
       <textarea class="form-control lg_textarea" name="cmt" placeholder="Questions/comments"></textarea> 
      </div> 
     </div> 

     <div class="buttn_outer"> 
      <button type="submit" class="btn signin_btn col-sm-5 clearfix" style="margin:0 0 0 4%; float: left";>Submit</button> 
     </div> 
    </form> 

    contact.php 

    <?php 
     $to='[email protected]'; 
     $header = "From: [email protected]".$_SERVER["SERVER_NAME"]."\n"; 
     $header .= "Content-Type: text/html; charset=iso-8859-1\n"; 

     $sender=$_POST['sender']; 
     $email=$_POST['email']; 
     $cmt=$_POST['cmt']; 
     $cmp=$_POST['cmp']; 
     $phno=$_POST['phno']; 

     $subject='Message Subject'; 

     $body='<table width="90%" border="0"> 
     <tr> 
     <td><b>Sender:</b></td> <td>'.$sender.'</td> 
     </tr> 
     <tr> 
     <td><b>Email:</b></td> <td>'.$email.'</td> 
     </tr> 
     <tr> 
     <td><b>Phone No:</b></td> <td>'.$phno.'</td> 
     </tr> 
     <tr> 
     <td><b>Copmany Name:</b></td> <td>'.$cmp.'</td> 
     </tr> 
     <tr> 
     <td><b>Comment:</b></td> <td>'.$cmt.'</td> 
     </tr> 
     <tr></table>'; 



     mail($to,$subject,$body,$header); 
     header('location:index.html'); 



    ?> 
Смежные вопросы