You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel实现PDF文件邮件发送求助(新手开发者)

在Laravel里实现带PDF附件的邮件发送

1. 先创建邮件类

用Artisan命令快速生成邮件模板类:

php artisan make:mail SendInvoiceMail

生成的文件在app/Mail/SendInvoiceMail.php,后续核心逻辑都在这里写。

2. 准备PDF文件(两种常用方式)

本地已有PDF文件

如果PDF是提前生成好存在服务器里的,直接用文件路径即可,比如存放在public/invoices/目录下。

动态生成PDF(推荐用dompdf包)

要是需要根据数据实时生成PDF,先安装常用的转换包:

composer require barryvdh/laravel-dompdf

这个包能把Blade视图转成PDF,比如你写一个emails/invoice.blade.php视图,里面放发票的HTML结构,再用下面的代码生成PDF实例:

use Barryvdh\DomPDF\Facade\Pdf;

// 传入视图和对应数据,生成PDF
$pdf = Pdf::loadView('emails.invoice', ['order' => $order]);

3. 在邮件类里添加附件逻辑

打开SendInvoiceMail.php,找到build()方法,加入附件处理:

添加本地PDF的示例

public function build()
{
    return $this->subject('您的订单发票已生成')
                // 指定邮件正文的视图
                ->view('emails.invoice_notice')
                // 附加本地PDF:第一个参数是文件路径,as是收件人看到的文件名,mime是文件类型
                ->attach(public_path('invoices/order_123.pdf'), [
                    'as' => '订单123号发票.pdf',
                    'mime' => 'application/pdf',
                ]);
}

添加动态生成PDF的示例

先在邮件类的构造函数里传入需要的数据(比如订单信息):

protected $order;

public function __construct($order)
{
    $this->order = $order;
}

然后在build()方法里生成并附加PDF:

public function build()
{
    // 用订单数据生成PDF
    $pdf = Pdf::loadView('emails.invoice', ['order' => $this->order]);
    
    return $this->subject('您的专属发票')
                ->view('emails.invoice_notice')
                // attachData直接传入PDF内容,无需提前保存到本地
                ->attachData($pdf->output(), '您的订单发票.pdf', [
                    'mime' => 'application/pdf',
                ]);
}

4. 触发邮件发送

在控制器或业务逻辑里调用发送即可:

use App\Mail\SendInvoiceMail;
use Illuminate\Support\Facades\Mail;

// 假设从数据库获取订单数据
$order = Order::find(123);
// 发送给指定收件人
Mail::to('customer@example.com')->send(new SendInvoiceMail($order));

常见踩坑提示

  • 检查.env里的邮件配置项(MAIL_MAILER、MAIL_HOST等),确保邮件基础发送功能正常
  • 动态生成PDF时,服务器的storage目录需要有写入权限
  • 用dompdf转PDF时,视图尽量用内联CSS,避免外部样式加载失败导致PDF排版混乱

内容的提问来源于stack exchange,提问作者Peter Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:18:35