tomirons/tuxedo

Simple transactional email classes/templates for Laravel 5.4 mailables

v2.0.0 2021-02-26 00:46 UTC

This package is not auto-updated.

Last update: 2024-12-22 03:00:38 UTC


README

Version License Total Downloads Build Status

Tuxedo is an easy way to send transactional emails with Laravel's Mail classes, with the templates already done for you.

Contents

Installation

  1. Run the following command:
$ composer require tomirons/tuxedo
  1. Open your config/app.php and add the following class to your providers array:
TomIrons\Tuxedo\TuxedoServiceProvider::class
  1. (Optional) If you would like to edit the templates, run the following command to publish them
php artisan vendor:publish --provider=TomIrons\Tuxedo\TuxedoServiceProvider

Classes

There are currently 3 different types of classes you can extend. ActionMailable, AlertMailable, and InvoiceMailable, and each have their own special properties and methods.

Global Methods

These methods are available in ALL classes.

  • greeting($greeting) - Sets the greeting for the message.
  • salutation($salutation) - Sets the salutation for the message.
  • line($line) - Add a line of text to the message.

ActionMailable

Methods

  • color($color) - Sets the color of the button. Available options are blue, green, and red.
  • action($text, $url) - Sets the button text and url.
  • success() - Sets the button color to green.
  • error() - Sets the button color to red.
  • info() - Sets the button color to blue.

Example

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use TomIrons\Tuxedo\Mailables\ActionMailable;

class ActionMail extends ActionMailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->greeting('Hello!')
                    ->line('Some line of text to tell you what exactly is going on.')
                    ->action('Click here to do something fun', url('/'))
                    ->line('Some other information to be displayed after the button.')
                    ->salutation('Regards, Example App');
    }
}

Screenshot

Action

AlertMailable

Methods

  • info() - Sets the type of the alert to info.
  • warning() - Sets the type of the alert to warning.
  • success() - Sets the type of the alert to success.
  • error() - Sets the type of the alert to error.
  • type($type) - Sets the type of alert, options are info, success, warning, and error.
  • message($message) - Sets the message to display in the alert.

Example

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use TomIrons\Tuxedo\Mailables\AlertMailable;

class AlertMail extends AlertMailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->greeting('Hello!')
                    ->info()
                    ->message('Some text goes here to inform the user')
                    ->line('Some line of text to tell you what exactly is going on.')
                    ->salutation('Regards, Example App');
    }
}

Screenshot

Alert

InvoiceMailable

Properties

  • $keys|array - Set which keys to use when looking for an item's name and price.

Methods

  • id($id) - Sets the invoice ID.
  • date($date) - Sets the date to display at the top of the invoice table.
  • due($date) - Sets the due date of the invoice.
  • items($items) - Add an list of items to the invoice. Acceptable variable types are Collection and array.
  • calculate($taxPercent, $shipping) - Calculates the tax and final total, MUST be called after items have been added.

Example

<?php

namespace App\Mail;

use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use TomIrons\Tuxedo\Mailables\InvoiceMailable;

class InvoiceMail extends InvoiceMailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->id(123456)
                    ->greeting('Hi John Doe!')
                    ->date(Carbon::now()->format('l, M j Y \a\t g:i a'))
                    ->due(Carbon::now()->addDays(7)->format('l, M j Y \a\t g:i a'))
                    ->action('Click me to pay', url('/'))
                    ->items([
                        ['product_name' => 'Example Product', 'product_price' => 123.99],
                        ['product_name' => 'Second Product', 'product_price' => 321.99]
                    ])
                    ->calculate(3, 15)
                    ->salutation('Regards, Example App');
    }
}

Screenshot

Invoice

License

Tuxedo is open-sourced software licensed under the MIT license