Class Mailer

Mailer base class.

Mailer classes let you encapsulate related Email logic into a reusable and testable class.

Defining Messages

Mailers make it easy for you to define methods that handle email formatting logic. For example:

class UserMailer extends Mailer
{
    public function resetPassword($user)
    {
        $this
            ->subject('Reset Password')
            ->to($user->email)
            ->set(['token' => $user->token]);
    }
}

Is a trivial example but shows how a mailer could be declared.

Sending Messages

After you have defined some messages you will want to send them:

$mailer = new UserMailer();
$mailer->send('resetPassword', $user);

Event Listener

Mailers can also subscribe to application event allowing you to decouple email delivery from your application code. By re-declaring the implementedEvents() method you can define event handlers that can convert events into email. For example, if your application had a user registration event:

public function implementedEvents()
{
    return [
        'Model.afterSave' => 'onRegistration',
    ];
}

public function onRegistration(Event $event, Entity $entity, ArrayObject $options)
{
    if ($entity->isNew()) {
         $this->send('welcome', [$entity]);
    }
}

The onRegistration method converts the application event into a mailer method. Our mailer could either be registered in the application bootstrap, or in the Table class' initialize() hook.

Cake\Mailer\Mailer implements Cake\Event\EventListenerInterface uses Cake\Datasource\ModelAwareTrait
Abstract
Namespace: Cake\Mailer
Located at Mailer/Mailer.php

Method Detail

__callsource public

__call( string $method , array $args )

Magic method to forward method class to Email instance.

Parameters

string $method
Method name.
array $args
Method arguments

Returns

mixed
$this

__constructsource public

__construct( Cake\Mailer\Email $email null )

Constructor.

Parameters

Cake\Mailer\Email $email optional null
Email instance.

getNamesource public

getName( )

Returns the mailer's name.

Returns

string
string

implementedEventssource public

implementedEvents( )

Implemented events.

Returns

array
array

Implementation of

Cake\Event\EventListenerInterface::implementedEvents()

layoutsource public

layout( string $layout )

Sets layout to use.

Parameters

string $layout
Name of the layout to use.

Returns

mixed
$this object.

resetsource protected

reset( )

Reset email instance.

Returns

mixed
$this

sendsource public

send( string $action , array $args [] , array $headers [] )

Sends email.

Parameters

string $action
The name of the mailer action to trigger.
array $args optional []
Arguments to pass to the triggered mailer action.
array $headers optional []
Headers to set.

Returns

array
array

Throws

Cake\Mailer\Exception\MissingActionException
\Cake\Mailer\Exception\MissingActionException
BadMethodCallException
\BadMethodCallException

setsource public

set( string|array $key , mixed $value null )

Sets email view vars.

Parameters

string|array $key
Variable name or hash of view variables.
mixed $value optional null
View variable value.

Returns

mixed
$this object.

viewBuildersource public

viewBuilder( )

Get Email instance's view builder.

Returns

Cake\View\ViewBuilder
\Cake\View\ViewBuilder

Methods used from Cake\Datasource\ModelAwareTrait

_setModelClasssource protected

_setModelClass( string $name )

Set the modelClass and modelKey properties based on conventions.

If the properties are already set they will not be overwritten

Parameters

string $name
Class name.

loadModelsource public

loadModel( string|null $modelClass null , string|null $modelType null )

Loads and constructs repository objects required by this object

Typically used to load ORM Table objects as required. Can also be used to load other types of repository objects your application uses.

If a repository provider does not return an object a MissingModelException will be thrown.

Parameters

string|null $modelClass optional null
Name of model class to load. Defaults to $this->modelClass
string|null $modelType optional null
The type of repository to load. Defaults to the modelType() value.

Returns

object
The model instance created.

Throws

Cake\Datasource\Exception\MissingModelException
If the model class cannot be found.
InvalidArgumentException
When using a type that has not been registered.
UnexpectedValueException
If no model type has been defined

modelFactorysource public

modelFactory( string $type , callable $factory )

Register a callable to generate repositories of a given type.

Parameters

string $type
The name of the repository type the factory function is for.
callable $factory
The factory function used to create instances.

modelTypesource public

modelType( string|null $modelType null )

Set or get the model type to be used by this class

Parameters

string|null $modelType optional null
The model type or null to retrieve the current

Returns

string|$this
$this

Magic methods summary

addAttachmentssource public

addAttachments( mixed $attachments )

Parameters

mixed $attachments optional

Returns

Cake\Mailer\Email
Email

addBccsource public

addBcc( mixed $email , mixed $name null )

Parameters

mixed $email optional
mixed $name optional null

Returns

Cake\Mailer\Email
Email

addCcsource public

addCc( mixed $email , mixed $name null )

Parameters

mixed $email optional
mixed $name optional null

Returns

Cake\Mailer\Email
Email

addHeaderssource public

addHeaders( array $headers )

Parameters

array $headers optional

Returns

Cake\Mailer\Email
Email

addTosource public

addTo( mixed $email , mixed $name null )

Parameters

mixed $email optional
mixed $name optional null

Returns

Cake\Mailer\Email
Email

attachmentssource public

attachments( mixed $attachments null )

Parameters

mixed $attachments optional null

Returns

Cake\Mailer\Email
Email

bccsource public

bcc( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

ccsource public

cc( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

charsetsource public

charset( mixed $charset null )

Parameters

mixed $charset optional null

Returns

Cake\Mailer\Email
Email

domainsource public

domain( mixed $domain null )

Parameters

mixed $domain optional null

Returns

Cake\Mailer\Email
Email

emailFormatsource public

emailFormat( mixed $format null )

Parameters

mixed $format optional null

Returns

Cake\Mailer\Email
Email

fromsource public

from( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

getHeaderssource public

getHeaders( array $include [] )

Parameters

array $include optional []

Returns

Cake\Mailer\Email
Email

headerCharsetsource public

headerCharset( mixed $charset null )

Parameters

mixed $charset optional null

Returns

Cake\Mailer\Email
Email

helperssource public

helpers( mixed $helpers null )

Parameters

mixed $helpers optional null

Returns

Cake\Mailer\Email
Email

messagesource public

message( mixed $type null )

Parameters

mixed $type optional null

Returns

Cake\Mailer\Email
Email

messageIdsource public

messageId( mixed $message null )

Parameters

mixed $message optional null

Returns

Cake\Mailer\Email
Email

profilesource public

profile( mixed $config null )

Parameters

mixed $config optional null

Returns

Cake\Mailer\Email
Email

readReceiptsource public

readReceipt( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

replyTosource public

replyTo( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

returnPathsource public

returnPath( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

sendersource public

sender( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

setHeaderssource public

setHeaders( array $headers )

Parameters

array $headers optional

Returns

Cake\Mailer\Email
Email

subjectsource public

subject( mixed $subject null )

Parameters

mixed $subject optional null

Returns

Cake\Mailer\Email
Email

templatesource public

template( mixed $template false , mixed $layout false )

Parameters

mixed $template optional false
mixed $layout optional false

Returns

Cake\Mailer\Email
Email

themesource public

theme( mixed $theme null )

Parameters

mixed $theme optional null

Returns

Cake\Mailer\Email
Email

tosource public

to( mixed $email null , mixed $name null )

Parameters

mixed $email optional null
mixed $name optional null

Returns

Cake\Mailer\Email
Email

transportsource public

transport( mixed $name null )

Parameters

mixed $name optional null

Returns

Cake\Mailer\Email
Email

viewRendersource public

viewRender( mixed $viewClass null )

Parameters

mixed $viewClass optional null

Returns

Cake\Mailer\Email
Email

viewVarssource public

viewVars( mixed $viewVars null )

Parameters

mixed $viewVars optional null

Returns

Cake\Mailer\Email
Email

Properties summary

$_clonedEmailsource

protected string

Cloned Email instance for restoring instance after email is sent by mailer action.

$_emailsource

protected Cake\Mailer\Email

Email instance.

$namesource

public static string

Mailer's name.

Properties used from Cake\Datasource\ModelAwareTrait

$_modelFactoriessource

protected array

A list of model factory functions.

[]

$_modelTypesource

protected string

The model type to use.

'Table'

$modelClasssource

public string

This object's primary model class name. Should be a plural form. CakePHP will not inflect the name.

Example: For an object named 'Comments', the modelClass would be 'Comments'. Plugin classes should use Plugin.Comments style names to correctly load models from the correct plugin.

© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.Mailer.Mailer.html