2014-12-08 3 views
0

Я просмотрел много страниц, чтобы найти ответ на мою проблему. Но я не могу понять, почему моя форма не работает. Я пробовал разные версии кодов из готовых примеров, но я не могу заставить его работать.PHP контактная форма

Это мой PHP выше моей формы

<?php 
    $name = $_POST['name']; 
    $from = $_POST['email']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 
    $to = '[email protected]'; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    if ($_POST['submit']) { 
     if (mail ($to, $subject, $body, $email)) { 
      echo '<p style="color: #27ae60;">Your message has been sent!</p>'; 
     } else { 
      echo '<p style="color: #c0392b;">Something went wrong, go back and try again!</p>'; 
     } 
    } 
?> 

и это моя форма

<form class="contact-form" method="post" action="contact.php"> 

    <label>Name</label> 
    <input name="name" placeholder="Your Name"> 

    <label>Email</label> 
    <input name="email" type="email" placeholder="Your Email"> 

    <label>Subject</label> 
    <input name="subject" placeholder="Your Subject"> 

    <label>Message</label> 
    <textarea class="contact-form-message" name="message" placeholder="Your Message"></textarea> 

    <input id="submit" name="submit" type="submit" value="Send"> 

</form> 

Я только изменил мою электронную почту в этом примере, здесь все остальное то же самое. Я тестирую этот live на современном сервере с поддержкой php 5+

В основном все работает отлично, за исключением того, что я не получаю электронное письмо. Я не могу понять, как заставить его работать печально. Любые идеи, было бы здорово:/

Edit: GOD Damnit И. М. идиотом

Gmail Спам-фильтр силен в этом.

ответ

1

Вы не указали $from.

Вот почему не отправляет почту.

Также проверьте настройки SMTP для вашего компьютера/сервера.

SMTP ports не может быть настроен, поэтому почта не отправляется.

0

Попробуйте это для формы:

<form class="contact-form" method="post" action="contact.php"> 

    <label>Name</label> 
    <input name="name" type="text" placeholder="Your Name"> 

    <label>Email</label> 
    <input name="email" type="text" placeholder="Your Email"> 

    <label>Subject</label> 
    <input name="subject" type="text" placeholder="Your Subject"> 

    <label>Message</label> 
    <textarea class="contact-form-message" type="text" name="message" placeholder="Your Message"></textarea> 

    <input id="submit" name="submit" type="submit" value="Send"> 

попробовать Кроме того, после этого рабочего формата:

<?php 
$to = "[email protected]"; 
$subject = "My subject"; 
$txt = "Hello world!"; 
$headers = "From: [email protected]" . "\r\n" . 
"CC: [email protected]"; 

mail($to,$subject,$txt,$headers); 
?> 

Вы можете просто заменить значение внутри "" с функцией пост.

Edit (Это, конечно, работать):

if (isset($_POST['submit'])) { 
     if (mail ($to, $subject, $body, $email)) { 
      echo '<p style="color: #27ae60;">Your message has been sent!</p>'; 
     } else { 
      echo '<p style="color: #c0392b;">Something went wrong, go back and try again!</p>'; 
     } 
    } 
0

Четвертый параметр для функции почты является заголовок. Где вы можете установить форму почты и другие (http://php.net/manual/en/function.mail.php). Пожалуйста, установите это, а также проверьте конфигурацию SMTP, как сказал вам «Программист-студент».

0
<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 
    $to = '[email protected]'; 
    $from = '[email protected]'; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    if (mail ($to, $subject, $body, $from)) { 
     echo '<p style="color: #27ae60;">Your message has been sent!</p>'; 
    } else { 
     echo '<p style="color: #c0392b;">Something went wrong, go back and try again! </p>'; 
    } 

?> 

Вы пропустили присвоить $ из переменной

<form class="contact-form" method="post" action="contact.php"> 
    <label>Name</label> 
    <input name="name" type="text" placeholder="Your Name"> 

    <label>Email</label> 
    <input name="email" type="text" placeholder="Your Email"> 

    <label>Subject</label> 
    <input name="subject" type="text" placeholder="Your Subject"> 

    <label>Message</label> 
    <textarea class="contact-form-message" name="message" placeholder="Your Message"> </textarea> 

    <input id="submit" name="submit" type="submit" value="Send"> 
</form> 

Убедитесь, что имя файла PHP «контакт.PHP»

0

Теперь мой HTML идет этот путь ->

<body> Fields with * are mandatory. 
 
<form action="mail.php" method="POST"> 
 
<fieldset> 
 
<legend>Contact Information</legend> 
 
<p>Name*</p> <input type="text" name="name"> 
 
<p>Email*</p> <input type="text" name="email"> 
 
</fieldset> 
 
<br /> 
 
<br /> 
 
<fieldset> 
 
<legend>Other Information</legend> 
 
<p>Website</p> <input type="text" name="website"> 
 

 
<p>Priority</p> 
 
<select name="priority" size="1"> 
 
<option value="Low">Low</option> 
 
<option value="Normal">Normal</option> 
 
<option value="High">High</option> 
 
</select> 
 
<br /> 
 

 
<p>Type</p> 
 
<select name="type" size="1"> 
 
<option value="update">Contact Us</option> 
 
<option value="change">Information Change</option> 
 
<option value="addition">Other</option> 
 

 
</select> 
 
<br /> 
 
</fieldset> 
 
<br /> 
 
<fieldset> 
 
<legend>Your Message</legend> 
 
<p>Message*</p><textarea name="message" rows="8" cols="29"></textarea><br /><p> 
 
<input type="submit" value="Send" class="but"> &nbsp;<input type="reset" value="Clear" class="but"> 
 
</fieldset> 
 
</form> 
 

 
</body>

и теперь главное, что PHP идет этот путь ->

<?php 
 
$name = $_POST['name']; 
 
$email = $_POST['email']; 
 
$website = $_POST['website']; 
 
$priority = $_POST['priority']; 
 
$type = $_POST['type']; 
 
$message = $_POST['message']; 
 
$formcontent=" From: $name \n Email: $email \n Website: $website \n Priority: $priority \n Type: $type \n Message: $message"; 
 
$recipient = "[email protected]"; 
 
$subject = "Contact Form"; 
 
$mailheader = "$name submited the form."; 
 
if (filter_var("$email", FILTER_VALIDATE_EMAIL)) { 
 
     if ($email === "" || $message === "" || $name === "") { 
 
echo "ERROR! Email and message and Name are Mandatory. <a href='contact.html' style='text-decoration:none;color:#ff0099;'> Return Back</a>"; 
 
} 
 
else { 
 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
 
mail($email, "Name of Form Here", "Your Form has been submitted. Your problem will be noticed soon. This is a no reply mail address. Please dont reply back. - WeBoosters India", "Thankyou") or die("Error!"); 
 
echo "Thank You!" . " -" . "<a href='index.html' style='text-decoration:none;color:#ff0099;'> Return Home</a>"; 
 
} 
 
} 
 
    else { 
 
     echo "The email is not valid. Please write a proper email address. - <a href='contact.html' style='text-decoration:none;color:#ff0099;'> Return Back</a>"; 
 
    } 
 
?>

Надеюсь, вам понравится! Удачи.

+0

Извините, что я опубликовал старую версию. Удалите все «доменные» вещи из PHP. Благодарю. –

+0

Теперь я улучшил его Теперь вы можете получить его быстро и хорошо! –

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