Задать вопрос
@avprinciple

Как отправить несколько файлов разного формата через wp_mail?

Есть форма c несколькими file-input полями, к которым прикрепляются файлы разного формата, как их все прикрепить к attachment для wp_mail? Должны отправляться не на сервер, а именно с пользовательской формы на почту админа.

wp_mail( $to, $subject, $message, $headers, 
  array(
    $file_one['tmp_name'],
    $file_two['tmp_name'],
    $file_etc['tmp_name']
  ) 
)


Вот так работает, отправляет все файлы, но без расширения, так как tmp_name - это путь к файлу.
Так же, если указывать
$any_file = $_FILES['any_file'];
а потом через wp_mail();
wp_mail( $to, $subject, $message, $headers, $any_file);

Отправляет файл на почту без расширения, на mac распознается тип файла, открывает нужную программу, как оно будет на Windows? И как добавить имя и тип файла к вложению?
  • Вопрос задан
  • 355 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@avprinciple Автор вопроса
Нужно загружать файлы на сервер, потом с сервера уже отправлять на почту. Можно удалять файлы с сервера - после отправки на почту.

if ( ! function_exists( 'wp_handle_upload' ) ) {
          require_once( ABSPATH . 'wp-admin/includes/file.php' );
        }

        $file = $_FILES['file_project'];

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

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


$attachments = array(
          $drawing_project['file'], // 1 файл
          $description_project['file'], // 2 файл
          $file_project['file'] // 3 файл
        );
        
  
        $response_mail = wp_mail( $to, $subject, $message, $headers = '', $attachments);


Удалим файлы с сервера, после отправки на почту
if( $response_mail ) {
          // Что-то сделаем, если успешно отправилось на почту.
          func_response_mail()->add('success', 'success'); // Простая функция, которая вызывает алерт с сообщением об успешной отправке
        } else {
          func_response_mail()->add('failure', 'failure');
        }

        foreach ( (array)$attachments AS $file ) {
          if( file_exists($file) ) {
            unlink($file);
          }
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы