你好,我现在有问题
我正在执行“将PDF自动附加到电子邮件页面”。它的工作原理是在每行中都有一个电子邮件按钮,单击该按钮后,用户将被重定向到根据ID自动附加存储在存储文件夹中的PDF的页面。我试图使PDF失效,它以乱码显示PDF文件的内容,如果在PDF文件上进行dieump,我认为这是正常的。但是,我不断收到错误消息“无法打开文件进行读取”。这是我的代码:
控制器:
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);
}
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
attach
方法需要文件路径,而不是文件内容。如果要从存储中附加文件,可以使用attachFromStorage
。如果要附加原始数据(文件内容),则可以尝试使用attachData
方法。
Laravel 6.x Docs - Mail - Writing Mailables - Attachments
您可以将传递给Storage::get
的相同路径传递给attachFromStorage
方法:
$path = 'public/coverLetter/'. $filename;
... SendEmailToCompany($data['subject'], $data['message'], $path) ...
然后在可邮寄邮件中尝试:
return $this->markdown('email.emailToCompany')->attachFromStorage($this->attach);