Контактная форма не отправляет полное электронное письмо

Мне удалось заставить свою контактную форму работать, но почему-то я не могу заставить ее отправлять сообщение, структурированное так, как я хочу...

Мой код таков:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$messagesubject = $_POST['subject'];
$text = $_POST['text'];

$to = "[email protected]";
$subject = 'Message from a site visitor '.$name;


$content = 'Name: '.$name."\r\n";
$content .= 'E-mail: '.$email."\r\n";
$content .= 'Subject: '.$messagesubject."\r\n";
$content .= 'Message: '.$text."\r\n";


$send_contact=mail($to,$subject,$content);

if($send_contact){
echo "Thank you!";
}
else {
echo "ERROR";
}
?>

Я получаю почту, но в адресе отправителя (От) написан мой адрес электронной почты с сервера хостинга. Если я добавлю $headers (я создал заголовки следующим образом: " $headers = 'From: '.$field_email."\r\n"; ") в почту(), я не получу никакой почты...

Пожалуйста помоги...

(*я отредактировал свой пост)


person romullus    schedule 31.03.2014    source источник
comment
Это похоже на программирование карго-культа.   -  person John Conde    schedule 31.03.2014


Ответы (2)


У вас есть три ошибки (и одна дополнительная ошибка):

  1. Вы помещаете тело сообщения в переменную с именем $message, но используете переменную с именем $text в своей функции mail().

  2. Вы используете неправильную переменную для своих заголовков. Вы используете $email, должно быть $headers

  3. Кроме того, кажется, что у вас переменные в вашей функции mail() не по порядку. Заголовки идут после тела сообщения.

  4. Вы пишете переменную с именем $formcontent, но никогда ее не используете. В любом случае это избыточно с $message.

$send_contact=mail($to,$subject,$message,$headers);

person John Conde    schedule 31.03.2014
comment
Кроме того, точка в первом $message должна быть опущена $message .= 'From: ' . $name . "\n"; - person Funk Forty Niner; 31.03.2014

Попробуй это

<?php
    error_reporting(0); 
    if(isset($_POST['submit_button']))
    {     
    $to = '[email protected]';
    $name = $_POST['name'];
    $email = $_POST['email'];
    $msg = $_POST['msg'];
    $subject = $_POST['subject'];

     $message.="Name : $name \n \n";
     $message.="Email : $email \n \n";
     $message.="Message : $msg \n \n";

        $headers = "From: ".$_POST['email']." (My Email Form )";
        if(mail($to, $subject, $message, $headers))
        {
        echo "Thank you!";
        }
        else {
        echo "ERROR";
        }
    }
    ?>
    <form id="contact-form" method="POST">
         <input name="name" type="text" class="form-control" placeholder="Name" required>
         <input name="email" type="email" class="form-control" placeholder="Email" required>
         <input name="subject" type="text" class="form-control" placeholder="Subject" required>
         <textarea name="msg" class="form-control" placeholder="Message" rows="5" cols="30" required></textarea>
        <input type="submit" name="submit_button" value="send"/>
    </form>
person Waseem Ahmad    schedule 20.04.2017