wp_mail 200 response but no mail sent
-
Hi all
I’m trying to send email from WP using ajax to validate the form and wp_mail to send the mail.
The form is a basic form with id names on the fields
The js validtion looks like this
$(function(){ $('#submit').click(function(e) { e.preventDefault(); e.stopPropagation(); if(verfiyFields()) { requestData = { 'action' : 'myajax-submit', 'firstName' : $("#name").val(), 'email' : $("#email").val(), } $.post(MyAjax.ajaxurl, requestData).done(function(result){ //result = jQuery.parseJSON( result ); if(result == 'success'){ console.log('email0-sent') } }); } }); }) function verfiyFields() { var flag = true; var name = $('#name'); var email = $('#email'); if(name.val().indexOf(' ') === -1 ){ name.parent().prepend('<p class="form-error">Please enter name, first space last</p>'); errorMessage($('.form-error')); flag = false; } if(!IsEmail(email.val())){ email.parent().prepend('<p class="form-error">Please enter valid email address</p>'); errorMessage($('.form-error')); flag = false; } return flag; }
I’m using grunt to concate and minify the js so I’m enqueue the js script which includes the validation in the functions.php like this.
add_action( 'wp_enqueue_scripts', 'add_my_script' ); function add_my_script() { wp_register_script('scripts',get_template_directory_uri() . '/js/compiled/main.min.js', array('jquery'),1 ,true); wp_enqueue_script('scripts'); wp_localize_script( 'scripts', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) )); } and the myajax_submit function like this. add_action( 'wp_ajax_myajax-submit', 'myajax_submit' ); function myajax_submit() { // get the submitted parameters $name = sanitize_text_field($_POST['firstName']); $email = sanitize_text_field($_POST['email']); $headers[] = 'From: ' . $name . ' <' . $email . '>' . "\r\n"; $headers[] = 'Content-type: text/html' . "\r\n"; //Enables HTML ContentType. Remove it for Plain Text Messages //$to = TRAINING_EMAIL; $to = 'me@mysite.co.uk'; wp_mail( $to, $subject, $message, $headers ); // generate the response $response = json_encode( array( 'success') ); // response output header( "Content-Type: application/json" ); echo $response; // IMPORTANT: don't forget to "exit" exit; }
I’m using a correct email address in the $to variable.
If I test on a live server the valdation works.
In Chromes Network tab I can see the admin-ajax.php run and the header tab on the right shows a Status code of 200 OK
Does this mean the mail should have been sent – I don’t get any email
- The topic ‘wp_mail 200 response but no mail sent’ is closed to new replies.