serii81
@serii81
Я люблю phр...

Почему не приходит файл из формы на почту?

Привет всем.
Написал скрипт по правилам wordpress для отправки на почту.
Форму у меня слшиком сложная, множество селектов, для этого подключил vue inline.
И еще нужно отправить некоторые данные на api и на несколько почт.

Письма приходят, только проблема с прикрепленным файлом.
В переменной $attachments путь до файла есть, а на почту не приходит.
Уже второй день мучаюсь.
Вот сам скрипт.
Переменные я спрятал.

<?php
    function true_localize_example()
    {
        wp_enqueue_script('truescript', get_template_directory_uri() . '/vue/topcare/ajax.js', [], null, false);
        wp_localize_script('truescript', 'true_object', array(
            'ajax_url' => admin_url('admin-ajax.php'),
            'nonce'    => wp_create_nonce('feedback-nonce'),
        ));
    }
    add_action('wp_enqueue_scripts', 'true_localize_example');
    add_action('wp_ajax_topcare', 'ajax_form');
    add_action('wp_ajax_nopriv_topcare', 'ajax_form');
    function ajax_form()
    {
        if (!wp_verify_nonce($_POST['nonce'], 'feedback-nonce')) {
            wp_die('Data was recieved from another address');
        }
        if (!empty($_POST['checkField'])) {
            wp_die('This is a spam');
        }
        if (!function_exists('wp_handle_upload')) {
            require_once(ABSPATH . 'wp-admin/includes/file.php');
        }
        $file = $_FILES['administrator_file'];

        if ($file) {
            $upload_overrides = array(
                'test_form' => false
            );

            $file_project = wp_handle_upload($file, $upload_overrides);
            $attachments = array(
                $file_project['url'] // 3 файл
            );

            $headers = [
                "MIME-Version: 1.0",
                "From: $contactPerson <$personEmail>",
                "Content-Type: text/html; charset=UTF-8",
                "Bcc: altuofianco.topcare@gmail.com"
            ];
            add_filter('wp_mail_content_type', 'my_custom_email_content_type');
            function my_custom_email_content_type()
            {
                return 'text/html';
            }

            if (wp_mail($mail_to, $thmClient, $clientMessage, $headers, $attachments)) {
                $output = json_encode(array('type' => 'success', 'text' => 'Email was sent successfully'));
                wp_die($output);
            }
        }
    }


Заранее благодарен.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
serii81
@serii81 Автор вопроса
Я люблю phр...
Решил проблему.
Нужно прописать физический путь до файла а не url.

$upload_overrides = array(
			'test_form' => false
		);

		$file_project = wp_handle_upload($file, $upload_overrides);

		$attachments = array(
			$file_project['file'] // 3 файл
		);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы