php - Laravel 如何将生成的 PDF 附加到电子邮件
问题描述
我正在开发一个应用laravel
程序,用户可以在其中填写并提交包含一些用户数据的表单。当用户提交表单时,我会收到一封电子邮件,确认用户已向我发送了包含一些数据的表单。现在,除此之外,我还添加了pdf
使用用户数据生成的功能,我想将其附加到电子邮件中。到目前为止它工作正常,但我的问题是现在我收到两封电子邮件。一个带有确认信息,一个带有生成的 PDF。
这是我的控制器的样子:
$application = Applicant::create([
'email' => request()->email,
'name' => request()->name,
'avatar' => request()->avatar,
'phone' => request()->phone,
'address' => request()->address,
'zipcode' => request()->zipcode,
'city' => request()->city,
]);
$pdf = PDF::loadView('pdf.application', $application);
Mail::send('pdf.application', $pdf_data, function ($message) use ($pdf_data, $pdf) {
$message->to('my@mail.com', $application["name"])
->subject('New Applicant - ' . $application["name"])
->attachData($pdf->output(), "application_" . $application["name"] . ".pdf");
});
Mail::to('my@mail.com')->send(new NewApplication($application->fresh()));
return response()->json('OK', 200););
NewApplication
-methods 构建函数如下所示:
public function build()
{
$build = $this->replyTo($this->application->email, $this->application->name)
->subject("New Application in Database: {$this->application->name}")
->view('emails.application')
->with([
'name' => $this->application->name,
'address' => $this->application->address,
'email' => $this->application->email,
'phone' => $this->application->phone
]);
}
那么,我怎样才能将这两种邮件方式结合起来,让我只收到一种呢?
更新
好的,所以我尝试在我的NewApplication.php
public function __construct(SingleApplication $application)
{
$this->application = $application;
$this->pdf = PDF::loadView('pdf.application', $this->application);
}
public function build()
{
$build = $this->replyTo($this->application->email, $this->application->name)
->subject("New application in database: {$this->application->name}")
->view('emails.application')
->attach($this->pdf, [
'as' => 'applicant.pdf',
'mime' => 'application/pdf',
]);
return $build;
}
但这失败并给了我错误basename() expects parameter 1 to be string, object given
-还有其他建议吗?
解决方案
根据文档附加文档(无论是 pdf 还是其他任何内容)的 Laravel 方法是在 Mail 类的 build 方法中
->attach($pdf->output(), [
'as' => "application_" . $application["name"] . ".pdf",
'mime' => 'application/pdf',
]);
推荐阅读
- javascript - Node.js 命令提示符中的“反应不存在”
- excel - 在powerpivot中连接两个具有多对多关系的表
- visual-studio-code - Visual Studio Code 和 pylint 未发现模块问题
- javascript - 等待事件未触发
- intel - 带有 Z80 处理器的任何东西都可以运行 Gameboy 游戏吗?
- vba - 不断收到运行时错误“13”:类型不匹配
- c# - 更改类库中的用户设置
- node.js - Nodejs - Apache Cassandra(使用 Datastax 驱动程序)
- sql - 返回 Netezza SQL 中每个组的最大值日期
- ios - Swift4.2:为什么 func gameDidEnd(_:) 不需要使用游戏参数但仍然在函数中声明?