Отправить вложение по электронной почте с помощью wp_mail

Я использую wordpress 4.4.2.

Код формы для типа файла:

<input placeholder="'.__( 'Select File', 'mk_framework' ).'" type="file" name="file" id="file" class="contact_file file-form select-input full"/>

Я использовал следующий код для загрузки файла и отправки вложения на электронную почту.

if ( ! function_exists( 'wp_handle_upload' ) ) {
  require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
$uploadedfile = $_FILES['file'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile && ! isset( $movefile['error'] ) ) {
  echo "File is valid, and was successfully uploaded.n";
  var_dump( $movefile );
  $attachments = $movefile[ 'file' ];
} else {
  echo $movefile['error'];
}

wp_mail($to, $subject, $body, $headers, $attachments);

Я также увеличил размер переменных ‘upload_max_filesize и’ post_max_size ‘ в php.ini, но не может получить вложение по электронной почте.

Но все равно это даст мне ошибку, как:

Файл пуст. Пожалуйста, загрузите что-то более существенное. Эта ошибка также может быть вызвана отключением загрузки в php.ini или post_max_size определяется как меньший, чем upload_max_filesize в php.ini.

Так есть ли способ сделать это?
Любая помощь/предложение были бы оценены.

1 ответ

  1. последний ответ;

    Необходимо изменить разрешение на загрузку папки

    как

    chown -R www-data:www-data /var/www/html
    

    вам нужно использовать arrayдля attchement.

    if ( ! function_exists( 'wp_handle_upload' ) ) {
      require_once( ABSPATH . 'wp-admin/includes/file.php' );
    }
    $uploadedfile = $_FILES['file'];
    $upload_overrides = array( 'test_form' => false );
    $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
    if ( $movefile && ! isset( $movefile['error'] ) ) {
      echo "File is valid, and was successfully uploaded.\n";
      var_dump( $movefile );
      $attachments = array($movefile[ 'file' ]);
    } else {
      echo $movefile['error'];
    }
    
    wp_mail($to, $subject, $body, $headers, $attachments);