“无法打开文件以供阅读”将存储中的PDF附加到可邮寄

时间:2019-10-21 01:28:24

标签: php laravel

你好,我现在有问题

我正在执行“将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);

}

任何帮助将不胜感激。谢谢!

1 个答案:

答案 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);