Почтовые данные не поступают

Update Two : после некоторого тестирования я обнаружил, что он не работает, когда jQuery загружается на страницу. Моя страница основана на jQuery, так что мне делать?

Обновление : здесь вы можете увидеть проблемную страницу и рабочую тестовую страницу здесь .


Я делаю контактную форму, и это выглядит так

<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="../sendemail.php"> <div class="row-fluid"> <div class="span5"> <label>First Name</label> <input name="first" type="text" class="input-block-level" required="required" placeholder="Your First Name"> <label>Last Name</label> <input name="last" type="text" class="input-block-level" required="required" placeholder="Your Last Name"> <label>Email Address</label> <input name="email" type="text" class="input-block-level" required="required" placeholder="Your email address"> </div> <div class="span7"> <label>Message</label> <textarea name="message" id="message" required class="input-block-level" rows="8"></textarea> </div> </div> <button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button> <p> </p> </form> 

Ничего особенного. sendemail.php выглядит так

 <?php header('Content-type: application/json'); $status = array( 'type'=>'success', 'message'=>'Email sent!' ); $name = @trim(stripslashes($_POST['first']." ".$_POST['last'])); $email = @trim(stripslashes($_POST['email'])); $subject = "Monarc - Message From ".$name; $message = @trim(stripslashes($_POST['message'])); $email_from = $email; $email_to = 'xxx@xxx.xxx'; $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); echo json_encode($status); die; 

Письмо приходит, но почта не появляется в письме. Он говорит (неизвестный отправитель) как отправитель, и тело выглядит так:

Имя:

Эл. адрес:

Тема: Monarc – Сообщение от

Сообщение:

Что я делаю не так?

Благодаря!

Solutions Collecting From Web of "Почтовые данные не поступают"

Чтобы опубликовать значение формы, вы должны использовать ввод типа submit вместо типа кнопки

изменение:

 <button type="submit" class="btn btn-primary btn-large pull-right">Send Message</button> 

чтобы:

 <input type="submit" class="btn btn-primary btn-large pull-right" value="Send Message"> 

Дополнительная информация, эта форма использует следующий файл javascript:

jQuery (function ($) {

// Ajax contact var form = $ ('. Contact-form'); form.submit (function () {$ this = $ (this); $ .post ($ (this) .attr ('action'), function (data) {$ this.prev (). text (data.message) .fadeIn (). delay (3000) .fadeOut ();}, 'json'); return false;});

// Goto Top $ ('. Gototop'). Click (function (event) {
event.preventDefault (); $ ('html, body'). animate ({scrollTop: $ ("body"). offset (). top}, 500); }); // End goto top

});

Поиск на другом форуме я нашел, как исправить это. Вам нужно всего лишь добавить следующий код в файл php:

 $headers = "From: mail <$email_from>\r\n"; $headers .= "MIME-Version: 1.0" ."\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

и удалите «@» из $ success = @mail ($ email_to, $ subject, $ body, 'From: <'. $ email_from. '>');

В файле «main.js» ваш код не предоставляет никаких данных в методе .post (). вам нужно добавить $ (this) .serialize (), чтобы получить все поля / значения формы.

непроверенный, но должен работать –

$ .post ($ (this) .attr ('action'), $ (this) .serialize (), function (data) {

Надеюсь, что это поможет решить проблему