php - “无法打开文件进行阅读”将 PDF 从存储附加到可邮寄
问题描述
你好我现在有问题
我正在执行“将 PDF 自动附加到电子邮件页面”。它的工作原理是每行都有一个电子邮件按钮,单击该按钮时,用户将被重定向到页面,该页面会根据 ID 自动附加存储在存储文件夹中的 PDF。我试图对 PDF 进行死转,它以乱码显示 PDF 文件的内容,如果对 PDF 文件进行死转,我认为这是正常的。但是,我不断收到错误“无法打开文件进行读取”。这是我的代码:
控制器:
public function sendToCompany(Request $request){
$filename = request('attachedLetter');
$letter = \Storage::get('public/coverLetter/'.$filename);
$data = array(
'email' => request('company_email'),
'subject' => request('email_subject'),
'message' => request('email_message'),
'attachedLetter' => $letter
);
\Mail::to($data['email'])->send(new SendEmailToCompany($data['subject'], $data['message'], $data['attachedLetter']));
}
可邮寄:
public $content;
// public $attach;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($subject, $content, $files)
{
$this->subject = $subject;
$this->content = $content;
$this->attach = $files;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$file = $this->attach;
dd($file);
return $this->markdown('email.emailToCompany')->attach($file);
}
任何帮助将不胜感激。谢谢你!
解决方案
该attach
方法需要一个文件路径,而不是文件的内容。如果要附加存储中的文件,可以使用attachFromStorage
. 如果要附加原始数据(文件内容),可以尝试使用该attachData
方法。
Laravel 6.x 文档 - 邮件 - 编写 Mailables - 附件
您可以将传递给该方法的相同路径传递Storage::get
给该attachFromStorage
方法:
$path = 'public/coverLetter/'. $filename;
... SendEmailToCompany($data['subject'], $data['message'], $path) ...
然后在邮件中你可以尝试:
return $this->markdown('email.emailToCompany')->attachFromStorage($this->attach);