[英]How to send blade as attachment in pdf format in laravel?
我想用 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,然后作為附件發送。 我正在為 pdf 使用 snappy。
我認為您想將 pdf 作為附件發送到您的電子郵件中而不將其保存在您的系統中。
您可以參考以下代碼來執行此操作。
public function sendmail()
{
$data["email"]='useremail@gmail.com';
$data["client_name"]='user_name';
$data["subject"]='sending pdf as attachment';
//Generating PDF with all the post details
$pdf = PDF::loadView('userdata'); // this view file will be converted to PDF
//Sending Mail to the corresponding user
Mail::send([], $data, function($message)use($data,$pdf) {
$message->to($data["email"], $data["client_name"])
->subject($data["subject"])
->attachData($pdf->output(), 'Your_Post_Detail.pdf', [
'mime' => 'application/pdf',
])
->setBody('Hi, welcome user! this is the body of the mail');
});
}
希望對你有幫助。
為了更好地理解你可以按照這篇文章
我不知道如何先將此文件更改為 pdf,然后作為附件發送。 我正在為 pdf 使用 snappy。
所以這就是問題所在。 您正在附加一個 HTML 文件,並簡單地將其命名為 PDF。 那行不通。 您確實需要從您呈現的 HTML 視圖中生成此 PDF。
這是 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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.