php - 附件不使用 Laravel 邮件发送

标签 php laravel

我正在尝试使用 Laravel 发送电子邮件并将生成的 PDF 附加到电子邮件中。正在发送电子邮件,但未发送 pdf。

注意事项: 使用 Larvel 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 ) 我应该收到正确的电子邮件,包括附件。我收到了电子邮件,但没有收到附件。我该如何解决这个问题?

最佳答案

你能为你的 pdf 尝试 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

关于php - 附件不使用 Laravel 邮件发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51999286/

相关文章:

javascript - 基于XML文件的页面生成(PHP、Jquery)

带有 PHP 客户端的 Java TCP 套接字服务器?

php - 为什么 error_log 仅使用 phpunit 的 --process-isolation 生成 RuntimeException

php - Laravel + Vue 前端与可选的服务器端 Blade 渲染解耦

javascript - 如何使用 laravel mix 定义全局 javascript 函数

PHP 在 Linux 命令提示符下传递 $_GET

php - 如何在 phpmyadmin 中将字符串字段设置为 NULL?

php - 基于很少参数的 Laravel 搜索条件

php - Laravel APP_URL 没有改变

php - Laravel:配置文件中“::class”的含义