Создать акаунт
Всё для вебмастера » Вопросы и ответы » CMS » WordPress » Как настроить отправку файла на почту Wordpress?

Как настроить отправку файла на почту Wordpress?

13 фев 2023, 18:45
WordPress
136
0
Есть форма, инпут для файла выглядит так:

<div class="input__wrapper">  <input name="file" type="file" id="input__file" class="input input__file" value="1" multiple>  <label for="input__file" class="input__file-button">   <p class="input__file-icon-wrapper"><img class="input__file-icon" src="https://qna.habr.com<?php echo get_template_directory_uri();?>/assets/img/icons/file_download.svg"  alt="Выбрать файл" width="25"></p>  <p class="input__file-button-text">Выберите файл</p>  </label></div>

Обработчик AJAX

jQuery(document).ready(function ($) {    var add_form = $('#form-ivent');var formData = new FormData(form);    // Сброс значений полей    $('#form-ivent input, #form-ivent textarea').on('blur', function () {        $('#form-ivent input, #add_feedback textarea').removeClass('error');        $('.error-name,.error-tel,.error-email,.error-comments').remove();        $('#submit-form-ivent').val('Отправить');    });    // Отправка значений полей    var options = {        url: feedback_object.url,        dаta: {            action: 'feedback_action',            nonce: feedback_object.nonce,formData,        },        type: 'POST',        dataType: 'json',        beforeSubmit: function (xhr) {            // При отправке формы меняем надпись на кнопке            $('#submit-form-ivent').val('Отправляем...');        },        success: function (request, xhr, status, error) {                        if (request.success === true) {                // Если все поля заполнены, отправляем данные и меняем надпись на кнопке//                 add_form.after('<div class="message-success">' + request.data + '</div>').slideDown();                $('#submit-form-ivent').val('Отправлено');            } else {                // Если поля не заполнены, выводим сообщения и меняем надпись на кнопке                $.each(request.data, function (key, val) {                    $('.art_' + key).addClass('error');                    $('.art_' + key).before('<p class="error-' + key + '">' + val + '</p>');                });                $('#submit-form-ivent').val('Ошибка...');            }            // При успешной отправке сбрасываем значения полей            $('#form-ivent')[0].reset();        },        error: function (request, status, error) {            $('#submit-form-ivent').val('Ошибка...');        }    };    // Отправка формы    add_form.ajaxForm(options);});


Проверяю файл в обработчик php

// Проверяем файловif($_FILES) {$filepath = array();$filename = array();$i = 0;foreach ($_FILES["file"]["error"] as $key => $error) {if ($error == UPLOAD_ERR_OK) {$filename[$i][0] = $_FILES["file"]["tmp_name"][$key];$filename[$i][1] = $_FILES["file"]["name"][$key];$i++;}}}


Отправляю форму в обработчике php

// Указываем адресата$email_to = 'email@yandex.ru';// Если адресат не указан, то берем данные из настроек сайтаif ( ! $email_to ) {$email_to = get_option( 'admin_email' );}$body    = "Имя: $art_name \nТелефон: $art_tel \nEmail: $art_email \n\n\nМероприятие: $art_ivent \nИнтеграция: $art_adv \nСообщение: $art_comments";$headers = 'From: ' . $art_name . ' <' . $email_to . '>' . "\r\n" . 'Reply-To: ' . $email_to;$boundary = "--".md5(uniqid(time())); // генерируем разделитель$multipart .= $body;foreach ($filename as $key => $value) {$fp = fopen($value[0], "r"); $content = fread($fp, filesize($value[0]));fclose($fp);$file .= "--".$boundary."\r\n";$file .= "Content-Type: application/octet-stream\r\n";$file .= "Content-Transfer-Encoding: base64\r\n";$file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n";$file .= chunk_split(base64_encode($content))."\r\n";}$multipart .= $file."--".$boundary."--\r\n";// Отправляем письмоwp_mail( $email_to, $art_subject, $body, $headers, $filename, $multipart );// Отправляем сообщение об успешной отправке$message_success = 'Сообщение отправлено. В ближайшее время с вами свяжутся.';wp_send_json_success( $message_success );}


Никак не получается, файл не приходит на почту.

Внимание! Как настроить отправку файла на почту Wordpress? предоставлен пользователями сайта исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Смотрите также:

Комментарии к Как настроить отправку файла на почту Wordpress?
Добавить Комментарий
В комментариях запрещаются спам, а также реклама любых товаров и услуг, иных ресурсов.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.