Skip to main content
Version: 9.x



The Mail component allows you to describe an email and send it whenever needed.

For more details refer to this link.


  • Containers MAY or MAY NOT have one or more Mail.

  • Ship may contain general Mails.


  • All Notifications MUST extend from App\Ship\Parents\Mails\Mail.
  • Email Templates must be placed inside the Mail directory in a Templates directory app/Containers/{container}/Mails/Templates.

Folder Structure

 - app
- Containers
- {container-name}
- Mails
- UserRegisteredMail.php
- ...
- Templates
- user-registered.blade.php
- ...
- Ship
- Mails
- SomeMail.php
- ...
- Templates
- some-template.blade.php
- ...

Code Samples

Example: a simple Mail


namespace App\Containers\User\Mails;

use App\Containers\User\Models\User;
use Illuminate\Bus\Queueable;
use App\Ship\Parents\Mails\Mail;
use Illuminate\Contracts\Queue\ShouldQueue;

class UserRegisteredMail extends Mail implements ShouldQueue
use Queueable;

protected $user;

public function __construct(User $user)
$this->user = $user;

public function build()
return $this->view('user::user-registered')
->to($this->user->email, $this->user->name)
'name' => $this->user->name,

Usage from an Action:

Notifications can be sent from Actions or Tasks using the Mail Facade.

Mail::send(new UserRegisteredMail($user));

Email Templates

Templates should be placed inside a folder Templates inside the Mail folder.

To access a Mail template (same like accessing a web view) you must call the container name then the view name.

In the example below we're using the user-registered.blade.php template in the User Container.


Configure Emails

Open the .env file and set the From mail and address, this will be used globally whenever the from function is not called in the Mail.

[email protected]

To use different email address in some classes add ->to($this->email, $this->name) to the build function in your Mail class.

By default Apiato is configured to use Log Driver MAIL_DRIVER=log, you can change that from the .env file.

Queueing A Notification

To queue a notification you should use Illuminate\Bus\Queueable and implement Illuminate\Contracts\Queue\ShouldQueue.