Я использую wp_mail () для получения писем, которые отправляются через контактную форму в моем блоге WordPress. wp_mail () возвращает true, но дело в том, что я не получаю никаких писем. Я также попытался изменить почтовый адрес на hotmail из gmail, но не повезло.
Код Ajax в шаблоне контакта
$('#send').click(function() { //For Validation function validateText(name) { var pattern = /^[a-zA-Z'-.\s]+$/; if (pattern.test(name)) { return true; } return false; } //For Validation function validateMail(mail) { var pattern = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,3}$/; //var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/; if (pattern.test(mail)) { return true; } return false; } //Getting values from the form var name = $('#name').val(), mail = $('#mailid').val(), query = $('#message').val(), error = 1; //For Validation if(name == "" || !(validateText(name))) { $('#name').addClass('error'); error = 0; } ////For Validation if(mail == "" || !(validateMail(mail))) { $('#mailid').addClass('error'); error = 0; } //For Validation if(query == "") { $('#message').addClass('error'); error = 0; } if(!error) { // If validation fails return false; } $('#sendAlert').show(); $('#send').html('Sending...'); $.post(ajax_object.ajaxurl, { // Using ajax post method to send data action: 'ajax_action', sendmail: 'nothing', name: name, mail: mail, query: query }, function(data) { $('#send').html('Send'); alert(data); // Alerting response return false; }); });
В Functions.php
function ajax_action_stuff() { if(isset($_POST['sendmail'])) { function set_html_content_type() { return 'text/html'; } if(isset($_POST['name']) && isset($_POST['mail']) && isset($_POST['query'])) { $name = $_POST['name']; $email = $_POST['mail']; $query = $_POST['query']; $to = 'vigneshmoha@gmail.com'; if($name == "" || $email == "" || $query == "") { echo "Fail"; return false; } $subject = "Website - Query from ".$name; $message = "Hi, <p><strong>Name</strong>:".$name."</p> <p><strong>Mail</strong>:".$email."</p> <h3><strong>Query</h3> <p>".$query."</p>"; $headers[] = 'From: no-reply@gmail.com'."\r\n"; $headers[] = ''; add_filter( 'wp_mail_content_type', 'set_html_content_type' ); $mailsent = wp_mail( $to, $subject, $message, $headers); remove_filter( 'wp_mail_content_type', 'set_html_content_type' ); // reset content-type to to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578 if($mailsent) { echo $to; } else { echo 'error'; } } else { echo 'error'; } } else { echo 'error'; } die(); } add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' ); add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' );
поfunction ajax_action_stuff() { if(isset($_POST['sendmail'])) { function set_html_content_type() { return 'text/html'; } if(isset($_POST['name']) && isset($_POST['mail']) && isset($_POST['query'])) { $name = $_POST['name']; $email = $_POST['mail']; $query = $_POST['query']; $to = 'vigneshmoha@gmail.com'; if($name == "" || $email == "" || $query == "") { echo "Fail"; return false; } $subject = "Website - Query from ".$name; $message = "Hi, <p><strong>Name</strong>:".$name."</p> <p><strong>Mail</strong>:".$email."</p> <h3><strong>Query</h3> <p>".$query."</p>"; $headers[] = 'From: no-reply@gmail.com'."\r\n"; $headers[] = ''; add_filter( 'wp_mail_content_type', 'set_html_content_type' ); $mailsent = wp_mail( $to, $subject, $message, $headers); remove_filter( 'wp_mail_content_type', 'set_html_content_type' ); // reset content-type to to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578 if($mailsent) { echo $to; } else { echo 'error'; } } else { echo 'error'; } } else { echo 'error'; } die(); } add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' ); add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' );
Возможно, что ваша электронная почта помечена как спам, или просто ваш поставщик электронной почты не позволяет ей попасть в ваш почтовый ящик, отправляете ли вы через SMTP?
У вас есть записи SPF? Если вы отправляете электронное письмо с вашего веб-сайта и имеете заголовок, заданный как @gmail.com
или @hotmail.com
, это, безусловно, не поступит в ваш почтовый ящик, поскольку письмо не отправляется с серверов gmail или hotmail, оно идет от вашего, так что подумайте, что вы пытаетесь совершить фишинг-атаку.
Редактировать:
Нет, он не помечен как спам. Я тоже проверил спам. Почта не получает вообще. wp_mail () должен возвращать true, как только он отправил почту правильно? Так должен ли я изменить заголовок на что-то еще?
-vigneshmoha
Это означает, что почта покинула ваш сервер, это не значит, что он поступит в ваш почтовый ящик, так как есть много других шагов между вашим сервером и вашим почтовым ящиком, и несколько разных вещей могут пойти не так в этом процессе. Попробуйте проверить заголовок From:
change, example@yourdomainname.com