san_jorich
@san_jorich
Творческий кодер

PDF сохраняется на машину вместо передачи на mail Что не так?

Здравствуйте! По задумке сгенерированный pdf должен закачиваться на сервер и затем отправляться как вложение на почту. Обработчик написан так, что письмо не отправится если файл не закачен на сервер и не сохранен, но сейчас письмо приходит без вложения а JS предлагает сохранить файл на машину пользователя, отправляющего письмо..
Что не так делаю? Помогите пожалуйста!
jQuery("#send_grafic").on('click', function(){             
            var message_header = '<html><head><link rel="stylesheet" href="'+bootstrap_css+'" media="all"><link rel="stylesheet" href="'+sheduler_css+'" media="all"><link rel="stylesheet" href="'+print_css+'" media="all"></head><body>';            
            var message_body = jQuery('#sheduler_grafic').html();            
            var message_footer = '</body></html>';            
            jQuery(message_body).remove("#sheduler_grafic_title");            
            var message = message_header+message_body+message_footer;
            var opt = {  
              filename:     'Shedule_Grafic.pdf',
              image:        { type: 'png', quality: 1 },
              html2canvas:  { scale: 0.5, dpi:300 },
              jsPDF:        { unit: 'in', format: 'letter', orientation: 'l' }
            }; // New Promise-based usage: html2pdf().set(opt).from(message).save();
            
            var pdf = btoa( html2pdf(message, opt) );
        
            jQuery.ajax({
                url: ajax_url,
                type: 'POST',
                dataType: 'json',
                data: { action: "es_send_workingShedule", pdf:pdf},
                success: function(response) { console.log(response); },            
                error: function(response) { console.log(response); },            
            });                
        });


if(!empty($_POST['pdf'])){ 
      if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
      $uploadedfile = base64_decode($_POST['pdf']);  $upload_overrides = array( 'test_form' => false );      
      $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );      
      if ( $movefile ) {
        $message = 'График работы во вложении';
        $attachment = $movefile;
        wp_mail("*********@mail.ru","График работы",  $message, array("Content-type: text/html; charset=utf-8" ), $attachment);
        //unset($movefile);
        return "График работы выслан на почту";
        
      } else { return "При сохранении что-то пошло не так.."; }      
    }   else { return "Данные не пришли на отправку"; }
  }
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
@sewaca
wp_handle_upload - сохраняет файл в соответствующий каталог wp-content/uploads/.... и возращает массив вида:

Array
(
	[file] => sites/wptest.ru/www/wp-content/uploads/2014/06/Daft-Punk-Something-About-Us.mp3
	[url] => http://wptest.ru/wp-content/uploads/2014/06/Daft-Punk-Something-About-Us.mp3
	[type] => audio/mpeg
)


В wp_mail под переменной attachments нужно передавать массив с абсолютным путем к файлу, то есть $movefile['file'];
Чтобы файл не сохранялся на сервере - можно удалять его wp_delete_file( $movefile['file'] ) после отправки письма
Ответ написан
Ваш ответ на вопрос

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

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