如何将 blade 作为 pdf 格式的附件发送到 laravel?
How to send blade as attachment in pdf format in laravel?
I want to send blade file as attachment in mail with laravel. I am
writing below code for this but its not working.
Below is my controller where i am getting data from form and then send
this data to another controller where my attachment function is
called.
$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();
在 return 这个变量上显示错误:
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 个文件直接从文件夹发送。最后一个附在 blade 文件中。
->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。
I dont know how to first change this file into pdf and then send as attachment. I am using snappy for pdf.
这就是问题所在。您正在附加一个 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());
我认为您想将 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');
});
}
希望对您有所帮助。
为了更好的理解可以关注这篇文章
I want to send blade file as attachment in mail with laravel. I am writing below code for this but its not working.
Below is my controller where i am getting data from form and then send this data to another controller where my attachment function is called.
$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();
在 return 这个变量上显示错误:
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 个文件直接从文件夹发送。最后一个附在 blade 文件中。
->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。
I dont know how to first change this file into pdf and then send as attachment. I am using snappy for pdf.
这就是问题所在。您正在附加一个 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());
我认为您想将 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');
});
}
希望对您有所帮助。
为了更好的理解可以关注这篇文章