Отправить электронное письмо на конкретный адрес при нажатии кнопки?

Вопрос или проблема

Я создал пользовательский шаблон страницы с функцией поиска. Эта функция поиска отображает посты, и я хочу создать кнопку под каждым постом, которая при нажатии будет отправлять электронное письмо автору поста the_author_email();

Я пытаюсь разобраться, как это сделать. Я хочу, чтобы письмо отправлялось без перезагрузки страницы. Это возможно?

Спасибо!

Вам нужно вызвать функцию JavaScript при нажатии кнопки. Она должна быть сохранена непосредственно в .php шаблоне и выглядеть следующим образом:

function SubmitData() {
    var email = <?php echo get_the_author_meta('email'); ?>;
    $.post("submit.php", { email: email }
}

Затем вам нужно создать PHP-скрипт, который может быть сохранен в файле submit.php (как показано выше в вашем JavaScript):

    <?php
      $from = "[email protected]"; 
      $to = $_POST['email']; // это электронная почта автора

      $subject = "Ваш заголовок"; 
      $message = "Ваше сообщение (оно может содержать HTML тоже)";

      $headers  = "MIME-Version: 1.0\r\n";
      $headers .= "Content-type: text/html; charset=UTF-8\r\n";
      $headers .= "From:" . $from;

      mail($to,$subject,$message, $headers);
    ?>

Вы можете передавать другие переменные (например, тему или содержимое сообщения) таким же образом, как и адрес электронной почты.

Надеюсь, это поможет, дайте знать, если у вас получилось.

Ответ или решение

Конечно! Вот подробный ответ на ваш вопрос о том, как отправить электронное письмо по адресу автора поста при нажатии кнопки, не перезагружая страницу.

Шаг 1: Добавление кнопки на каждого поста

Сначала добавьте кнопку на вашу страницу шаблона, где вы отображаете посты. Она может выглядеть так:

<button class="send-email" 
        data-email="<?php echo esc_attr(get_the_author_meta('user_email')); ?>">
    Отправить Email
</button>

Здесь мы используем data-email, чтобы сохранить адрес электронной почты автора поста.

Шаг 2: Создание JavaScript функции

Теперь необходимо написать функцию на JavaScript, которая будет срабатывать при нажатии кнопки. Вы можете включить этот код непосредственно в ваш шаблон или подключить файл скрипта.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
    $(document).ready(function() {
        $('.send-email').on('click', function() {
            var email = $(this).data('email'); // Получаем email из data-атрибута

            $.post("submit.php", { email: email }, function(response) {
                alert('Email отправлен: ' + response); // Можно обработать ответ от сервера
            }).fail(function() {
                alert('Ошибка при отправке email.');
            });
        });
    });
</script>

Шаг 3: Создание PHP-скрипта для обработки запроса

Теперь создайте файл submit.php, который будет обрабатывать POST-запрос и отправлять email:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Защита от CSRF
    if (!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        die('Недопустимый адрес электронной почты.');
    }

    $from = "noreply@example.com"; // Укажите свой адрес отправителя
    $to = $_POST['email']; // Эмейл автора поста
    $subject = "Ваш Заголовок"; 
    $message = "<html><body><h1>Ваше сообщение</h1><p>Это тестовое сообщение!</p></body></html>"; // Ваше сообщение

    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=UTF-8\r\n";
    $headers .= "From: " . $from . "\r\n";

    if (mail($to, $subject, $message, $headers)) {
        echo 'Email успешно отправлен!';
    } else {
        echo 'Ошибка при отправке email.';
    }
}
?>

Шаг 4: Настройка серверных разрешений

Убедитесь, что ваш сервер поддерживает отправку почты и настройки PHP для функции mail() работают корректно.

Завершение

Теперь, когда вы нажимаете кнопку, JavaScript будет отправлять POST-запрос к вашему PHP-скрипту, и автору поста будет отправлено email-сообщение без перезагрузки страницы.

Если у вас возникнут дополнительные вопросы или необходима помощь по другим аспектам, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...