Skip to content

Attachments configuration

All the configuration variables refers to config/mailcarrier.php file.

max_size

The maximum file size allowed for attachments in kilobytes.

php
'attachments' => [
    /*
    |--------------------------------------------------------------------------
    | Max attachments size
    |--------------------------------------------------------------------------
    |
    | Define the maximum attachments files in kb.
    | For example, 1024 * 5 = 5MB.
    |
    */
    'max_size' => 1024 * 5,

    // ...

mimetypes

The allowed mimetypes for attachments preventing malicious files to be sent via email.
By default are allowed: images, csv, xls, xlsx, pdf and zip.

php
'attachments' => [
    // ...

    /*
    |--------------------------------------------------------------------------
    | Accepted mimetypes
    |--------------------------------------------------------------------------
    |
    | Define the accepted mimetypes.
    | Set it to null to accept any kind of file.
    |
    */
    'mimetypes' => [
        'image/jpeg',
        'image/png',
        'image/gif',
        'text/csv',
        'application/vnd.ms-excel', // xls
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // xlsx
        'application/pdf',
        'application/zip',
    ],

    // ...

disk

Defined by the MAILCARRIER_FILESYSTEM_DISK environment variable (and default to the Laravel default one via FILESYSTEM_DISK), represents the default disk used to store attachments for logs (see log_strategy) or to fetch them when a remote disk is used.

By default it uses the local disk (aka your filesystem), but you can use anything such as S3 (or API-compatible), FTP, DropBox or a custom one, as long as it follows the Laravel Filesystem logic.

php
'attachments' => [
    // ...

    /*
    |--------------------------------------------------------------------------
    | Default attachments storage
    |--------------------------------------------------------------------------
    |
    | Define the default storage that will be used to
    | upload or download attachments.
    | When an attachment is sent and saved for logs, it will be uploaded.
    | When an attachment is a reference, it will be fetched.
    |
    */
    'disk' => env('MAILCARRIER_FILESYSTEM_DISK', env('FILESYSTEM_DISK')),

    // ...

additional_disks

An array of additional allowed disk to fetch remote attachment. Useful if you plan to use more than one storage, such as one for images, one for documents etc.

php
'attachments' => [
    // ...

    /*
    |--------------------------------------------------------------------------
    | Additional attachments disks
    |--------------------------------------------------------------------------
    |
    | Define the additional disks available to pull referenced attachments.
    |
    */
    'additional_disks' => [
      'my_other_disk',
    ],

    // ...

path

The default path where attachments for logs will be stored (see log_strategy). Can be a S3 or similar bucket path too.
By default null means that they will be stored in the "path root".

php
'attachments' => [
    // ...

    /*
    |--------------------------------------------------------------------------
    | Upload path
    |--------------------------------------------------------------------------
    |
    | Define the default path where the standard attachments will be uploaded.
    |
    */
    'path' => null,

    // ...

log_strategy

Define how (and if) to store attachments for logs purposes when present in a email. It allows three different values:

  • AttachmentLogStrategy::Inline: attachments will be saved, encrypted, in the database. Since it can lead to a big space in your database, the suggestion is to use it combined with logs pruning.
  • AttachmentLogStrategy::Upload: attachments will be uploaded in your default disk and path and its location saved in your log.
  • AttachmentLogStrategy::None: attachments content will not be saved anywhere, but only its name and size for reference.
php
'attachments' => [
    // ...

    /*
    |--------------------------------------------------------------------------
    | Log's attachment strategy
    |--------------------------------------------------------------------------
    |
    | Define the strategy to retain attachments for logs:
    | - AttachmentLogStrategy::Inline to save them encoded in the database.
    | - AttachmentLogStrategy::Upload to upload them in the storage (if standard).
    | - AttachmentLogStrategy::None to save only their names and sizes.
    |
    */
    'log_strategy' => AttachmentLogStrategy::Inline,
],