Как отправить блейд в виде вложения в формате pdf в laravel? - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу отправить blade-файл в виде вложения в почту с laravel.Я пишу код ниже для этого, но он не работает.

Ниже мой контроллер, где я получаю данные из формы, а затем отправляю эти данные другому контроллеру, где вызывается моя функция вложения.

$data = array('shareholders'=>$request->com_shareholder_count,'contract_send'=>$request->contract_send);
$to = $mail_log->to_email_id = $request->email_id;
$mail = Mail::to($to)->send(new SendMailable($data));

Это мой контроллер SendMailable:

$director_info_pdf = view('directors_info',compact('data'))->render();

При возврате этой переменной отображается ошибка:

message: "Invalid view.", exception: "InvalidArgumentException",…}
exception: "InvalidArgumentException"
file: "C:\xampp\htdocs\caps_admin\vendor\laravel\framework\src\Illuminate\Mail\Mailer.php"
line: 285
message: "Invalid view."

После этой строки я пишу код для прикрепления моих файлов,куда я отправляю некоторые файлы, остальные 3 файла отправляются напрямую из папки.И последний прикреплен из блейд-файла.

->attachdata($director_info_pdf, 'dynamic_data.pdf')
        ->attach( $public_path.'/'.'contract.pdf', [
                        'as' => 'contract.pdf',
                        'mime' => 'application/pdf',
                    ])
        ->attach($public_path.'/'.'HMRC.pdf',[
                        'as' => 'HMRC.pdf',
                        'mime' => 'application/pdf',
                    ])
         ->attach($public_path.'/'.'clientR3.pdf',[
                        'as' => 'contract1.pdf',
                        'mime' => 'application/pdf',
                    ]);

Я могу отправить письмо со всеми 4 файлами в виде вложений.Но когда я пытаюсь открыть свои файлы в почте, остальные 3 файла работают как pdf.но ->attachdata($director_info_pdf, 'dynamic_data.pdf') этот файл поврежден.

Я не знаю, как сначала преобразовать этот файл в pdf, а затем отправить как вложение.Я использую Snappy для PDF.

1 Ответ

0 голосов
/ 02 декабря 2018

Я не знаю, как сначала преобразовать этот файл в pdf, а затем отправить как вложение.Я использую Snappy для PDF.

Так что это проблема прямо здесь.Вы присоединяете файл HTML и просто называете его так, как будто это PDF.Это не сработает.Вам действительно нужно сгенерировать этот PDF-файл из представления HTML, которое вы отображаете.

Вот документация для snappy:

https://github.com/barryvdh/laravel-snappy#usage

Я предлагаю вам ознакомиться с ним, поскольку приведенные здесь примеры довольно просты и понятны..

Это не проверено, , но если вы правильно настроили Snappy , основываясь на вашем коде, что-то вроде этого должно работать:

$snappy = App::make('snappy.pdf');
$director_info_pdf = $snappy->getOutputFromHtml(view('directors_info',compact('data'))->render());
...