W3cubDocs

/CakePHP 3.4

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
            ->setSubject('Reset Password')
            ->setTo($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
Location: Mailer/Mailer.php

Properties summary

Inherited Properties

Method Summary

Method Detail

__call()source 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


$this

__construct()source public

__construct( Cake\Mailer\Email $email null )

Constructor.

Parameters

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

getName()source public

getName( )

Returns the mailer's name.

Returns

string

implementedEvents()source public

implementedEvents( )

Implemented events.

Returns

array

Implementation of

Cake\Event\EventListenerInterface::implementedEvents()

layout()source public

layout( string $layout )

Sets layout to use.

Deprecated

3.4.0 Use setLayout() which sets the layout on the email class instead.

Parameters

string $layout
Name of the layout to use.

Returns


$this

reset()source protected

reset( )

Reset email instance.

Returns


$this

send()source 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

Throws

Cake\Mailer\Exception\MissingActionException
BadMethodCallException

set()source 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


$this

viewBuilder()source public

viewBuilder( )

Get Email instance's view builder.

Returns

Cake\View\ViewBuilder

Methods used from Cake\Datasource\ModelAwareTrait

_setModelClass()source 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.

loadModel()source 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

Cake\Datasource\RepositoryInterface
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

modelFactory()source public

modelFactory( string $type , callable $factory )

Override a existing 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.

modelType()source 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|Cake\Datasource\ModelAwareTrait
$this

Magic methods summary

addAttachments()source public

addAttachments( $attachments )

Parameters

$attachments

Returns

Cake\Mailer\Email

addBcc()source public

addBcc( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

addCc()source public

addCc( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

addHeaders()source public

addHeaders( array $headers )

Parameters

array $headers

Returns

Cake\Mailer\Email

addTo()source public

addTo( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

attachments()source public

attachments( $attachments )

Parameters

$attachments optional

Returns

Cake\Mailer\Email

bcc()source public

bcc( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

cc()source public

cc( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

charset()source public

charset( $charset )

Parameters

$charset optional

Returns

Cake\Mailer\Email

domain()source public

domain( $domain )

Parameters

$domain optional

Returns

Cake\Mailer\Email

emailFormat()source public

emailFormat( $format )

Parameters

$format optional

Returns

Cake\Mailer\Email

from()source public

from( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

getHeaders()source public

getHeaders( array $include )

Parameters

array $include optional

Returns

Cake\Mailer\Email

headerCharset()source public

headerCharset( $charset )

Parameters

$charset optional

Returns

Cake\Mailer\Email

helpers()source public

helpers( $helpers )

Parameters

$helpers optional

Returns

Cake\Mailer\Email

message()source public

message( $type )

Parameters

$type optional

Returns

Cake\Mailer\Email

messageId()source public

messageId( $message )

Parameters

$message optional

Returns

Cake\Mailer\Email

profile()source public

profile( $config )

Parameters

$config optional

Returns

Cake\Mailer\Email

readReceipt()source public

readReceipt( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

replyTo()source public

replyTo( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

returnPath()source public

returnPath( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

sender()source public

sender( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

setHeaders()source public

setHeaders( array $headers )

Parameters

array $headers

Returns

Cake\Mailer\Email

subject()source public

subject( $subject )

Parameters

$subject optional

Returns

Cake\Mailer\Email

template()source public

template( $template , $layout )

Parameters

$template optional
$layout optional

Returns

Cake\Mailer\Email

theme()source public

theme( $theme )

Parameters

$theme optional

Returns

Cake\Mailer\Email

to()source public

to( $email , $name )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Email

transport()source public

transport( $name )

Parameters

$name optional

Returns

Cake\Mailer\Email

viewRender()source public

viewRender( $viewClass )

Parameters

$viewClass optional

Returns

Cake\Mailer\Email

viewVars()source public

viewVars( $viewVars )

Parameters

$viewVars optional

Returns

Cake\Mailer\Email

Properties detail

$_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.

© 2005–2017 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.
https://api.cakephp.org/3.4/class-Cake.Mailer.Mailer.html