Intereting Posts
Как узнать категорию текущего продукта Как настроить различные permlalinks для сообщений и страниц? Виджет: html 2-мерный массив не работает Где вызов обратного вызова этой функции? wp nav menu: добавить атрибуты в пункты меню Пользовательский Thickbox Broken на странице Dashboard? Простейшая форма ajax не работает, когда она должна Добавление меню Nav для публикации admin Предотвращение добавления WordPress номера порта синхронизации браузера при сохранении wp_query pagination не сортировка правильно Код не работает с сообщением Постоянная ссылка Настройки Справка Добавление правила перезаписи на страницу, которая не имеет фиксированных переменных и разбивки на страницы Добро пожаловать Email Каждая новая запись / черновик имеет настраиваемую полевую переменную «yst_is_cornerstone», показывающая Требуется функция woocommerce для получения списка корзин с элементами

Почему функция wp_mail () не отправляет электронные письма и отображает «0» в ответе «Сеть» Chrome

Я пытаюсь отправить электронную почту через wordpress с помощью функции wp_mail (), и она не работает.

Он отображает 0 в ответе Chrome «Сеть» с

 Status Code:200 OK 

это моя часть кода:

  // Contact form Ajax add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form'); function submit_contact_form(){ if(isset($_POST['email'])) { $email = $_POST['email']; $email_to = "info@company.com"; $host = "ssl://smtp.gmail.com:465"; $username = 'myEmail@company.pro'; $password = 'passpass'; $email_subject = "You have a new email from $email via company.com website"; $message = $_POST['text']; $headers = array ('From' => $email, 'To' => $email_to,'Subject' => $email_subject); /*$smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password));*/ //$mail = $smtp->send($email_to, $headers, $message); wp_mail( $email_to, $email_subject, $message ); /*if (PEAR::isError($mail)) { echo($mail->getMessage()); } else { echo("Message successfully sent!\n"); }*/ } } error_reporting(E_ALL); ini_set("display_errors", 1); 

Какая часть может быть неправильной?

Редактировать:

Это часть ajax:

 // Send button for the "contact form". $('#sendBtn').click(function(){ //get info var fullname = $("#fullname").val(); var email = $("#email").val(); var text = $("#text").val(); //send info to php $.ajax({ beforeSend: function() { if ( IsEmail(email) == false) { $('#aboutUnsuccess').show("slow"); $('.form_content').hide("slow"); } }, url: document.location.protocol+'//'+document.location.host+'/wp-admin/admin-ajax.php', type: "POST", /*action: 'submit_contact_form',*/ data: ({ "action": "submit_contact_form", "fullname": fullname, "email": email, "text": text }), success: function (results){ if ( IsEmail(email) == true) { //hide table $('.form_content').hide('slow', function() { $('.form_content').hide( "slow" ); }); //show textboxes $('#aboutSuccess').show("slow"); $( "#aboutSuccess" ).append( "<iframe id=\"pixel-thing\" src=\"http://54.xx.xx.xx/wp-content/themes/twentyfifteen-child/thePixel.html\" width=\"1\" height=\"1\" border=\"0\"></iframe>" ); } } }); }); 

Поскольку это функция AJAX, ваша функция должна exit; или die(); после последней строки исполняемого кода, в этом случае вне выражения if перед окончательным }

Тем не менее, я не думаю, что это настоящая проблема, если вы получаете 0 возвращенных в моем опыте, это означает, что функция не запущена, потому что admin-ajax.php возвращает 0 если она попадает в конец файла и не забирает ваша функция.

Можете ли вы отправить запрос AJAX?

Также для отладки (потому что ваша функция фактически ничего не возвращает в данный момент), перед exit; или die(); вы можете добавить ответ, чтобы проверить, что ваша функция действительно выполняется, я обычно использую что-то вроде:

  header("Content-Type: application/json", true); echo json_encode( array("AJAX" => "Success") );