Форма HTML с почтой

Я не могу понять, откуда эта проблема! Почта () работает отлично (я уже тестировал его с помощью простого php-файла), но моя форма не отправляет никаких сообщений по электронной почте!

HTML

<section id="contact"> <div id="google-map" class="wow fadeIn" data-latitude="35.7777622" data-longitude="10.8285004" data-wow-duration="1000ms" data-wow-delay="400ms"></div> <div id="contact-us" class="parallax"> <div class="container"> <div class="row"> <div class="heading text-center col-sm-8 col-sm-offset-2 wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms"> <h2>Contact</h2> <p>Send a message</p> </div> </div> <div class="contact-form wow fadeIn" data-wow-duration="1000ms" data-wow-delay="600ms"> <div class="row"> <div class="col-sm-6"> <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> <div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms"> <div class="col-sm-6"> <div class="form-group"> <input type="text" name="name" class="form-control" placeholder="Name" required="required"> </div> </div> <div class="col-sm-6"> <div class="form-group"> <input type="email" name="email" class="form-control" placeholder="Email" required="required"> </div> </div> </div> <div class="form-group"> <input type="text" name="subject" class="form-control" placeholder="Sub" required="required"> </div> <div class="form-group"> <textarea name="message" id="message" class="form-control" rows="4" placeholder="Type your message" required="required"></textarea> </div> <div class="form-group"> <button type="submit" class="btn-submit">Send</button> </div> </form> </div> <div class="col-sm-6"> </div> </div> </div> </div> </div> </section><!--/#contact--> 

main.js

 // Contact form var form = $('#main-contact-form'); form.submit(function(event){ event.preventDefault(); var form_status = $('<div class="form_status"></div>'); $.ajax({ url: $(this).attr('action'), beforeSend: function(){ form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Progress...</p>').fadeIn() ); } }).done(function(data){ form_status.html('<p class="text-success">Thanks for your message</p>').delay(3000).fadeOut(); }); }); 

sendemail.php

 <?php $name = @trim(stripslashes($_POST['name'])); $from = @trim(stripslashes($_POST['email'])); $subject = @trim(stripslashes($_POST['subject'])); $message = @trim(stripslashes($_POST['message'])); $to = 'MyEmail@RemovedFor.privacy'; $headers = array(); $headers[] = "MIME-Version: 1.0"; $headers[] = "Content-type: text/plain; charset=iso-8859-1"; $headers[] = "From: {$name} <{$from}>"; $headers[] = "Reply-To: <{$from}>"; $headers[] = "Subject: {$subject}"; $headers[] = "X-Mailer: PHP/".phpversion(); mail($to, $subject, $message, $headers); die; 

Не могли бы вы помочь мне разобраться с проблемой? Когда я добавляю простую почту ('MyEmail@RemovedFor.privacy ',' My Subject ',' message ') в файл sendemail.php, каждый раз, когда форма отправляется, я получаю электронное письмо! Но я никогда не получаю почту ($ to, $ subject, $ message, $ headers);

большое спасибо

Solutions Collecting From Web of "Форма HTML с почтой"

Вы обманываете заголовок From на основе ввода пользователя. Не делай этого.

Заголовок заголовка сообщения электронной почты должен точно представлять отправителя сообщения электронной почты – если вы вставляете другое значение в этот заголовок, многие почтовые серверы отклонят вашу почту или помещают ее как спам, так как в результате этого сообщения произойдет сбой SPF и / или DMARC проверяет.

Используйте заголовок From, который точно представляет источник сообщения. Например, если ваш веб-сайт example.com , установите заголовок From: webmaster@example.com как From: webmaster@example.com . Укажите адрес электронной почты и имя, заданные пользователем либо в теле сообщения, либо в заголовке Reply-To .

Я думаю, что заголовки должны быть строкой.

 $headers = ''; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; $headers .= "From: {$name} <{$from}>\r\n"; $headers .= "Reply-To: <{$from}>\r\n"; $headers .= "Subject: {$subject}\r\n"; $headers .= "X-Mailer: PHP/".phpversion() . "\r\n"; 

http://php.net/manual/en/function.mail.php

Вы также должны фильтровать $ _POST

http://php.net/manual/en/function.filter-input.php

Я думаю, вам также нужно отправить данные через запрос ajax.

 $.ajax({ url: $(this).attr('action'), type: "POST", data: $(this).serialize(),