lukasss93/laravel-extra-mailable

Extra tools for Laravel Mailables

v1.0 2021-05-25 21:35 UTC

This package is auto-updated.

Last update: 2024-10-17 02:10:09 UTC


README

Laravel Extra Mailable

Version Downloads PHP Laravel License Build Coverage

Extra tools for Laravel Mailables

🚀 Installation

You can install the package using composer

composer require lukasss93/laravel-extra-mailable

👓 Usage

  1. Add the ExtraMailable Trait in your Mailable class:
<?php

namespace App\Mail;

use Illuminate\Mail\Mailable;
use Lukasss93\ExtraMailable\ExtraMailable;

class MyMail extends Mailable
{
    use ExtraMailable;

    protected int $value;

    public function __construct(int $value = 0)
    {
        $this->value = $value;
    }

    public function build() 
    {
        return $this->markdown('emails.myview', ['myvalue' => $this->value]);
    }
}
  1. How to use the trait:
<?php

use App\Mail\MyMail;

// send mail to recipient (string)
MyMail::create()->sendTo('foo@bar.org');

// send mail to recipients (string with semicolon separator)
MyMail::create()->sendTo('foo@bar.org;bar@foo.org');

// send mail to recipients (array)
MyMail::create()->sendTo(['foo@bar.org','bar@foo.org']);

// send mail to recipients (User)
MyMail::create()->sendTo(User::first());

// send mail to recipients (User collection)
MyMail::create()->sendTo(User::all());

// you can pass parameters in the create method
MyMail::create(69)->sendTo('foo@bar.org');

// send mail to recipients when condition is true
MyMail::create()->sendToWhen(true, 'foo@bar.org');

// execute custom code when there is no recipients
MyMail::create()
    ->onEmptyRecipients(fn() => print('No emails sent! No recipient found.'))
    ->sendTo([]);
    
// execute custom code before sending emails
MyMail::create()
    ->onBeforeSendingMails(fn() => print('This message will be printed before sending emails'))
    ->sendTo('foo@bar.org');

// execute custom code after sending emails
MyMail::create()
    ->onAfterSendingMails(fn() => print('This message will be printed after sending emails'))
    ->sendTo('foo@bar.org');

⚗️ Testing

composer test

📃 Changelog

Please see the CHANGELOG.md for more information on what has changed recently.

🏅 Credits

📖 License

Please see the LICENSE.md file for more information.