Laravel can do that?

Matt Stauffer has a new post outlining four things he didn’t know Laravel could do, but learned about them while writing his new book, Laravel: up and running.

The four items he outlines is:

  • The Cookie Fa├žade is one special cookie
  • Attaching files to emails is easier than you think
  • You can chain more Scheduler methods than the docs show
  • You can assert that a view gets passed certain data

While I was reading through this I started thinking about the email attachments and how ->attach expects a real file. It seems like you should be able to pass it raw data and still attach files easily.

Just as you might imagine Laravel does support this through ->attachData. Here is an example:

Mail::send('emails.whitepaper', [], function ($m) use($pdf) {
    $m->to('barasa@wangusi.ke');
    $m->subject('Your whitepaper download');
    $m->attachData($pdf->generate($data), 'filename.pdf');
});

As long as $pdf->generate($data) in my sample returns the raw bytes, it’ll be attached without having to first save it to the filesystem. For more on this see the documentation.