我正在尝试使用 Laravel 发送电子邮件并将生成的 PDF 附加到电子邮件中。电子邮件正在发送,但 pdf 未发送。
笔记:
使用 Laravel 版本 5.5
PHP 版本 >=7.0.0
我用来生成pdf的库:https://github.com/niklasravnsborg/laravel-pdf
这是代码:
<?php
namespace Portal\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use niklasravnsborg\LaravelPdf\Facades\Pdf as PDF;
class PreApprovalEmail extends Mailable
{
use Queueable, SerializesModels;
public $name;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($name)
{
$this->name = $name;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->subject('Pre approval letter');
return $this->view('emails.emailTemplate')->attachData($this->createPDF(), 'generated.pdf', [
'mime' => 'application/pdf',
]);
}
public function createPDF()
{
$data = array(
// data
);
$pdf = PDF::loadView('emails.generatablePDF', $data);
return $pdf->stream('document.pdf');
}
}
这是我的routes/web.php 文件中的路线:
Route::get('/samplemail', function () {
Mail::to("<my_email>@protonmail.com")->send(new PreApprovalEmail("test"));
return view('emails.generatablePDF')
});
根据文档(https://laravel.com/docs/5.5/mail)我应该收到正确的电子邮件,包括附件。我收到了电子邮件,但没有收到附件。我该如何解决这个问题?
你能试一下吗output
方法,而不是流式传输它,因为流首先调用输出,然后构建新的 http 响应:
/**
* @return mixed
*/
public function build()
{
$this->subject('Pre approval letter');
return $this->view('emails.emailTemplate')
->attachData($this->createPDF(), 'generated.pdf');
}
/**
* @return mixed
*/
public function createPDF()
{
$data = [
// data
];
$pdf = PDF::loadView('emails.generatablePDF', $data);
return $pdf->output();
}
还要确保您的 pdf 输出正确,因此执行dd
在将其附加到电子邮件之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)