代码之家  ›  专栏  ›  技术社区  ›  amit sutar

如何在laravel中以pdf格式发送刀片作为附件?

  •  0
  • amit sutar  · 技术社区  · 7 年前

    我想把刀片文件作为附件发送给laravel。我是 为此编写以下代码,但它不起作用。

    下面是我的控制器,我从表单中获取数据,然后发送 打电话。

    $data = array('shareholders'=>$request->com_shareholder_count,'contract_send'=>$request->contract_send);
    $to = $mail_log->to_email_id = $request->email_id;
    $mail = Mail::to($to)->send(new SendMailable($data));
    

    这是我的可发送控制器:

    $director_info_pdf = view('directors_info',compact('data'))->render();
    

    返回此变量时,它向我显示错误:

    message: "Invalid view.", exception: "InvalidArgumentException",…}
    exception: "InvalidArgumentException"
    file: "C:\xampp\htdocs\caps_admin\vendor\laravel\framework\src\Illuminate\Mail\Mailer.php"
    line: 285
    message: "Invalid view."
    

    在这一行之后,我正在编写附加文件的代码。在我发送一些文件的地方,其他3个文件直接从文件夹发送。最后一个是从刀片文件中附加的。

    ->attachdata($director_info_pdf, 'dynamic_data.pdf')
            ->attach( $public_path.'/'.'contract.pdf', [
                            'as' => 'contract.pdf',
                            'mime' => 'application/pdf',
                        ])
            ->attach($public_path.'/'.'HMRC.pdf',[
                            'as' => 'HMRC.pdf',
                            'mime' => 'application/pdf',
                        ])
             ->attach($public_path.'/'.'clientR3.pdf',[
                            'as' => 'contract1.pdf',
                            'mime' => 'application/pdf',
                        ]);
    

    我能够发送所有4个文件作为附件的邮件。但当我试图在mail中打开我的文件时,REST3文件以pdf格式工作。但是 ->attachdata($director_info_pdf, 'dynamic_data.pdf') 此文件已损坏。

    1 回复  |  直到 7 年前
        1
  •  1
  •   kishan maharana    5 年前

    我认为您希望在电子邮件中以附件形式发送pdf,而不将其保存在系统中。

    您可以参考以下代码来执行此操作。

    public function sendmail()
    {
            $data["email"]='useremail@gmail.com';
            $data["client_name"]='user_name';
            $data["subject"]='sending pdf as attachment';
    
            //Generating PDF with all the post details
    
            $pdf = PDF::loadView('userdata');  // this view file will be converted to PDF
    
            //Sending Mail to the corresponding user
    
            Mail::send([], $data, function($message)use($data,$pdf) {
            $message->to($data["email"], $data["client_name"])
            ->subject($data["subject"])
            ->attachData($pdf->output(), 'Your_Post_Detail.pdf', [
                       'mime' => 'application/pdf',
                   ])
            ->setBody('Hi, welcome user! this is the body of the mail');
            });
    }
    

    希望对你有帮助。

    为了更好地理解,您可以阅读本文

    how to send pdf as an attachment in email in laravel

        2
  •  0
  •   Criss    7 年前

    我不知道如何先将此文件更改为pdf,然后作为附件发送。我正在使用snappy for pdf。

    这就是问题所在。您正在附加一个HTML文件,并将其命名为PDF文件。那不行。您确实需要从呈现的HTML视图生成此PDF。

    以下是snappy的文档:

    https://github.com/barryvdh/laravel-snappy#usage

    我建议你仔细阅读,因为这里给出的例子非常简单易懂。

    这是未经检验的,, 但是如果你正确设置了Snappy

    $snappy = App::make('snappy.pdf');
    $director_info_pdf = $snappy->getOutputFromHtml(view('directors_info',compact('data'))->render());