简体   繁体   中英

Website contact form not receiving messages

Very new html and website developer and unsure why my current contact box is not working. I'm hosting it my own website and when I do attempt to send I get a message sent response but the emails are never received.

I have't eliminated the email hosting being broken by using multiple email addresses to send and receive from but have been unable to get find the source of the problem.

See relevant code bellow

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> Email is sending...</p>').fadeIn());
        }
    }).done(function (data) {
        form_status.html('<p class="text-success">Thank you for contact us. As early as possible  we will contact you</p>').delay(3000).fadeOut();
    });
});

sendemail.php

<?php
$name       = @trim(stripslashes($_POST['name'])); 
$from       = @trim(stripslashes($_POST['email'])); 
$subject    = @trim(stripslashes($_POST['name']));  
$message    = @trim(stripslashes($_POST['message'])); 
$to         = '\\myemailaddress//';

$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;

index.html

<div class="col-md-8 col-sm-12">
     <div class="contact-form bottom">
           <h2>Send a message</h2>
                <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
                     <div class="form-group">
                         <input type="text" name="name" class="form-control" required="required" placeholder="Name">
                        </div>
                        <div class="form-group">
                            <input type="email" name="email" class="form-control" required="required" placeholder="Email Id">
                        </div>
                        <div class="form-group">
                            <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="submit" class="btn btn-submit" value="Submit">
                       </div>
               </form>
       </div>
</div>

Thanks you in advance!

Next issue is you aren't sending any data with your ajax. Using $(formSelector).serialize() simplifies gathering the data

$.ajax({
    url: $(this).attr('action'),
    //serialize form data and include it with request
    data: form.serialize(),
    beforeSend: function () {
        ...
    }
}).done(function (data) {
    ....
});

Currently if you did print_r($_POST); in your php you would see it is empty

After work from @charlietfl answer. Changing the type and url seemed to fix it. Working code underneath :

main.js:

var form = $('#main-contact-form').serialize();
form.submit(function (event) {
    event.preventDefault();
    var form_status = $('<div class="form_status"></div>');
    $.ajax({
        url: $(this).attr('action'),
        type: 'POST',
        dataType: "json",
        beforeSend: function () {
            form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn());
        }
    }).done(function (data) {
        form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();

    });
});

and my .php

<?php 
    header('Content-type: '); 
    $status = array( 
        'type'=>'success', 
        'message'=>'Thank you for contact us. As early as possible  we will contact you ' 
    ); 

$name = @trim(stripslashes($_POST['name']));  
$email = @trim(stripslashes($_POST['email']));  
$subject = @trim(stripslashes($_POST['subject']));  
$message = @trim(stripslashes($_POST['message']));  

$email_from = $email; 
$email_to = '\\myemail//'; 

$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; 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM