PHP Sender w Wordpress dziwny błąd

0

Padła mi wtyczka Contact Form 7 nie chce przekazywać maili. Nie pamiętam kiedy pojawia się błąd czy po zmianie na PHP 8. Czy po nowych aktualizacjach WP.
Więc ok..
Piszę swoją wersję:

<form id="contactForm">
    <label for="fromEmail">Od kogo:</label><br>
    <input type="email" id="fromEmail" name="fromEmail" required><br>
    
    <label for="subject">Temat:</label><br>
    <input type="text" id="subject" name="subject" required><br>
    
    <label for="message">Treść:</label><br>
    <textarea id="message" name="message" rows="4" required></textarea><br>
    
    <button type="button" onclick="validateForm()">Wyślij</button>
</form>

<div id="response"></div>

<script>
function validateForm() {
    var fromEmail = document.getElementById("fromEmail").value;
    var subject = document.getElementById("subject").value;
    var message = document.getElementById("message").value;
    
    if (fromEmail.trim() === '' || subject.trim() === '' || message.trim() === '') {
        alert("Proszę wypełnić wszystkie pola.");
        return;
    }
    
    var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(fromEmail)) {
        alert("Proszę podać poprawny adres e-mail.");
        return;
    }
    
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "<?php echo admin_url('admin-ajax.php'); ?>", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                document.getElementById("response").innerHTML = xhr.responseText;
            } else {
                console.error("Wystąpił błąd podczas wysyłania żądania: " + xhr.status);
                alert("Wystąpił błąd podczas wysyłania żądania. Spróbuj ponownie później.");
            }
        }
    };
    xhr.onerror = function() {
        console.error("Wystąpił błąd podczas komunikacji z serwerem.");
        alert("Wystąpił błąd podczas komunikacji z serwerem. Spróbuj ponownie później.");
    };
    xhr.send("action=send_email&fromEmail=" + encodeURIComponent(fromEmail) + "&subject=" + encodeURIComponent(subject) + "&message=" + encodeURIComponent(message));
}


</script>

w pliku functions

add_action('wp_ajax_send_email', 'send_email');
add_action('wp_ajax_nopriv_send_email', 'send_email');

function send_email() {
    $to = "odpowiedzi@mail.com";
    $subject = $_POST['subject'];
    $message = $_POST['message'];
    $headers = "From: " . $_POST['fromEmail'] . "\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";

    if (mail($to, $subject, $message, $headers)) {
        echo "Wiadomość została wysłana pomyślnie.";
    } else {
        echo "Wystąpił problem podczas wysyłania wiadomości. Spróbuj ponownie później.";
    }

    wp_die();
}

Dostaję w konsoli błąd:

Unchecked runtime.lastError: The message port closed before a response was received.

I mail się nie wysyła ;/
Co robię źle?

0

Pewnie nie masz na serwerze skonfigurowanej usługi mail. Większość serwerów dziś odrzuca przesyłanie wiadomości bez autoryzacji.
Poczytaj:

https://stackoverflow.com/questions/32413576/smtp-authentication-with-php-mail-function
https://www.codementor.io/@andriyzap/how-php-email-sending-works-smtp-authentication-and-html-templates-10ff3qt3oe

1 użytkowników online, w tym zalogowanych: 0, gości: 1