2015-10-19 3 views
3

Я пытаюсь отправить электронную почту с помощью jquery и PHP, но почему-то я не получаю электронные письма, даже когда PHP выполняется успешно.Почему PHP-форма не отправляется по электронной почте?

Это мой Javascript код:

<script type='text/javascript'> 
    $("#formoid").submit(function(event) { 
     event.preventDefault(); 
     var $form = $(this), 
      url = $form.attr('action'); 
     var posting = $.post(url, { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      message: $('#message').val() 
     }); 
     posting.done(function(data) { 
      $("#result").empty().append('Thank you for contacting. Will get back to you as sson as possible.'); 
     }); 
    }); 
</script> 

Мой PHP выглядит следующим образом:

<?php 
    if(isset($_POST['submit'])){ 
     $to = "[email protected]"; // this is your Email address 
     $from = $_POST['email']; // this is the sender's Email address 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $subject = "Portfolio form submission"; 

     $message = $name . " " . $email . " wrote the following:" . "\n\n" . $_POST['message'];  

     $headers = "From:" . $from; 
     $headers2 = "From:" . $to; 
     mail($to,$subject,$message,$headers); 
    } 
?> 

Когда я отправить форму, и осмотреть РОМ, я вижу результаты хорошие. В деталях XHR, он показывает:

statusText: "OK" 

я делаю что-то здесь не так?

Edit: Добавление HTML в соответствии с просьбой:

<form class="no-bottom" id="formoid" action="contact.php" title="" method="post"> 
    <label for="name" class="sr-only">Name</label> 
    <input type="text" class="underline" name="name" id="name" placeholder="Your name..." required> 
    <label for="email" class="sr-only">Email</label> 
    <input type="email" class="underline" name="email" id="email" placeholder="Your email..." required> 
    <label for="message" class="sr-only">Message</label> 
    <textarea class="underline" name="message" id="message" cols="30" rows="6" placeholder="Here goes the message..." required></textarea> 
    <div class="margin-1"></div> 
    <input type="submit" value="Send it"> 
</form> 
+3

Проверка 'Исеть ($ _ POST [ 'отправить'])', когда он не передается от клиента – Tushar

+1

Где находятся вы выполняете этот PHP-код? У вас установлен и настроен MailServer? –

+0

Предоставьте свой 'html' здесь. –

ответ

1

isset($_POST['submit']) проверяет, существует ли ключ submit. От клиента.

Однако данные, отправленные с клиента, не включают его.

var posting = $.post(url, { 
    name: $('#name').val(), 
    email: $('#email').val(), 
    message: $('#message').val() 
}); 

Чтобы сделать его работу, вы можете либо добавить ее в данные POST, либо проверить другой ключ на сервере.

var posting = $.post(url, { 
    name: $('#name').val(), 
    email: $('#email').val(), 
    message: $('#message').val(), 
    submit: 'anythingTruthyHere' // Added `submit` key 
}); 

ИЛИ, вы можете проверить, если email присутствует в данных POST

if (isset($_POST['email'])) { 
    // send mail code here 
0

Вы можете использовать хороший LIB PHPMailer. Используя PHPMailer, вы можете легко установить адрес SMTP-сервера, порт и auth. Если вы хотите отправить электронное письмо с вашего локального компьютера, вы должны настроить локальный smtp-сервер (например, Postfix).

0

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

header("Location: contact.php"); 

Нет необходимости в яваскрипте и не сделать код complex.This должен помочь в основном.

+0

Привет, мой PHP уже является отдельным файлом. Вы можете видеть, что в моей форме я вызываю отдельный файл PHP. – ssdesign

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