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.

getModelType()source public

getModelType( )

Get the model type to be used by this class

Returns

string

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

Deprecated

3.5.0 Use getModelType()/setModelType() instead.

Parameters

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

Returns

string|Cake\Datasource\ModelAwareTrait
$this

setModelType()source public

setModelType( string $modelType )

Set the model type to be used by this class

Parameters

string $modelType
The model type

Returns


$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

getAttachments()source public

getAttachments( )

Returns

array

getBcc()source public

getBcc( )

Returns

array

getCc()source public

getCc( )

Returns

array

getCharset()source public

getCharset( )

Returns

string

getDomain()source public

getDomain( )

Returns

string

getEmailFormat()source public

getEmailFormat( )

Returns

string

getFrom()source public

getFrom( )

Returns

array

getHeaderCharset()source public

getHeaderCharset( )

Returns

string

getHeaders()source public

getHeaders( array $include )

Parameters

array $include optional

Returns

Cake\Mailer\Email

getHelpers()source public

getHelpers( )

Returns

array

getLayout()source public

getLayout( )

Returns

string

getMessageId()source public

getMessageId( )

Returns

boolean|string

getProfile()source public

getProfile( )

Returns

string|array

getReadReceipt()source public

getReadReceipt( )

Returns

array

getReplyTo()source public

getReplyTo( )

Returns

array

getReturnPath()source public

getReturnPath( )

Returns

array

getSender()source public

getSender( )

Returns

array

getSubject()source public

getSubject( )

Returns

string

getTemplate()source public

getTemplate( )

Returns

string

getTheme()source public

getTheme( )

Returns

string

getTo()source public

getTo( )

Returns

array

getTransport()source public

getTransport( )

Returns

Cake\Mailer\AbstractTransport

getViewRenderer()source public

getViewRenderer( )

Returns

string

getViewVars()source public

getViewVars( )

Returns

array

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

setAttachments()source public

setAttachments( $attachments )

Parameters

$attachments

Returns

Cake\Mailer\Email

setBcc()source public

setBcc( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setCc()source public

setCc( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setCharset()source public

setCharset( $charset )

Parameters

$charset

Returns

Cake\Mailer\Email

setDomain()source public

setDomain( $domain )

Parameters

$domain

Returns

Cake\Mailer\Email

setEmailFormat()source public

setEmailFormat( $format )

Parameters

$format

Returns

Cake\Mailer\Email

setFrom()source public

setFrom( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setHeaderCharset()source public

setHeaderCharset( $charset )

Parameters

$charset

Returns

Cake\Mailer\Email

setHeaders()source public

setHeaders( array $headers )

Parameters

array $headers

Returns

Cake\Mailer\Email

setHelpers()source public

setHelpers( array $helpers )

Parameters

array $helpers

Returns

Cake\Mailer\Email

setLayout()source public

setLayout( $layout )

Parameters

$layout

Returns

Cake\Mailer\Email

setMessageId()source public

setMessageId( $message )

Parameters

$message

Returns

Cake\Mailer\Email

setProfile()source public

setProfile( $config )

Parameters

$config

Returns

Cake\Mailer\Email

setReadReceipt()source public

setReadReceipt( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setReplyTo()source public

setReplyTo( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setReturnPath()source public

setReturnPath( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setSender()source public

setSender( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setSubject()source public

setSubject( $subject )

Parameters

$subject

Returns

Cake\Mailer\Email

setTemplate()source public

setTemplate( $template )

Parameters

$template

Returns

Cake\Mailer\Email

setTheme()source public

setTheme( $theme )

Parameters

$theme

Returns

Cake\Mailer\Email

setTo()source public

setTo( $email , $name )

Parameters

$email
$name optional

Returns

Cake\Mailer\Email

setTransport()source public

setTransport( $name )

Parameters

$name

Returns

Cake\Mailer\Email

setViewRenderer()source public

setViewRenderer( $viewClass )

Parameters

$viewClass

Returns

Cake\Mailer\Email

setViewVars()source public

setViewVars( $viewVars )

Parameters

$viewVars

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