A Comprehensive Guide to Adding Attachments in Laravel 10.x using Mailables

laravel May 20, 2023

Introduction

Sending emails with attachments is a crucial feature in modern web applications. Laravel makes this process seamless with its "mailables" functionality, allowing you to add various types of attachments to your outgoing emails.In this comprehensive guide, we will explore the different techniques for adding attachments to your Laravel mailables.

Step 1 Creating a Mailable Class

To get started, create a new mailable class using the Artisan command. Open your terminal and run:

php artisan make:mail ExampleMail

This command will generate a new mailable class named ExampleMail inside the app/Mail directory.

Step 2 Configuring Attachments

In the ExampleMail class, we will define the attachments that we want to include in the email. Attachments are specified using the attachments method, which should return an array of Illuminate\Mail\Mailables\Attachment instances.

Step 2.1: Attaching Files from the Local Disk

To attach a file from the local disk, use the fromPath method of the Attachment class:

use Illuminate\Mail\Mailables\Attachment;

public function attachments(): array
{
    return [
        Attachment::fromPath('/path/to/file.pdf'),
    ];
}

You can also specify a display name and MIME type for the attachment using the as and withMime methods:

public function attachments(): array
{
    return [
        Attachment::fromPath('/path/to/file.pdf')
            ->as('mailFile.pdf')
            ->withMime('application/pdf'),
    ];
}

Step 2.2: Attaching Files from Disk Storage

If the file you want to attach is stored on one of your filesystem disks, you can use the fromStorage method:

use Illuminate\Mail\Mailables\Attachment;

public function attachments(): array
{
    return [
        Attachment::fromPath('/path/to/file.pdf'),
    ];
}

Conclusion


By leveraging the power of Laravel's mailables, you have unlocked a valuable feature that enhances user communication and elevates the overall user experience in your web application. Happy coding and happy emailing with Laravel!

Tags