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|mixed

__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 deprecated

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. The name can be an alias like 'Post' or FQCN like App\Model\Table\PostsTable::class.

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 deprecated

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\Mailer

addBcc()source public

addBcc( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

addCc()source public

addCc( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

addHeaders()source public

addHeaders( array $headers )

Parameters

array $headers

Returns

Cake\Mailer\Mailer

addTo()source public

addTo( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

attachments()source public

attachments( $attachments = )

Parameters

$attachments optional

Returns

Cake\Mailer\Mailer

bcc()source public

bcc( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

cc()source public

cc( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

charset()source public

charset( $charset = )

Parameters

$charset optional

Returns

Cake\Mailer\Mailer

domain()source public

domain( $domain = )

Parameters

$domain optional

Returns

Cake\Mailer\Mailer

emailFormat()source public

emailFormat( $format = )

Parameters

$format optional

Returns

Cake\Mailer\Mailer

emailPattern()source public

emailPattern( $regex = )

Parameters

$regex optional

Returns

Cake\Mailer\Mailer

from()source public

from( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

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

getEmailPattern()source public

getEmailPattern( )

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\Mailer

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\Mailer

helpers()source public

helpers( $helpers = )

Parameters

$helpers optional

Returns

Cake\Mailer\Mailer

message()source public

message( $type = )

Parameters

$type optional

Returns

Cake\Mailer\Mailer

messageId()source public

messageId( $message = )

Parameters

$message optional

Returns

Cake\Mailer\Mailer

profile()source public

profile( $config = )

Parameters

$config optional

Returns

Cake\Mailer\Mailer

readReceipt()source public

readReceipt( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

replyTo()source public

replyTo( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

returnPath()source public

returnPath( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

sender()source public

sender( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

setAttachments()source public

setAttachments( $attachments )

Parameters

$attachments

Returns

Cake\Mailer\Mailer

setBcc()source public

setBcc( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setCc()source public

setCc( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setCharset()source public

setCharset( $charset )

Parameters

$charset

Returns

Cake\Mailer\Mailer

setDomain()source public

setDomain( $domain )

Parameters

$domain

Returns

Cake\Mailer\Mailer

setEmailFormat()source public

setEmailFormat( $format )

Parameters

$format

Returns

Cake\Mailer\Mailer

setEmailPattern()source public

setEmailPattern( $regex )

Parameters

$regex

Returns

Cake\Mailer\Mailer

setFrom()source public

setFrom( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setHeaderCharset()source public

setHeaderCharset( $charset )

Parameters

$charset

Returns

Cake\Mailer\Mailer

setHeaders()source public

setHeaders( array $headers )

Parameters

array $headers

Returns

Cake\Mailer\Mailer

setHelpers()source public

setHelpers( array $helpers )

Parameters

array $helpers

Returns

Cake\Mailer\Mailer

setLayout()source public

setLayout( $layout )

Parameters

$layout

Returns

Cake\Mailer\Mailer

setMessageId()source public

setMessageId( $message )

Parameters

$message

Returns

Cake\Mailer\Mailer

setProfile()source public

setProfile( $config )

Parameters

$config

Returns

Cake\Mailer\Mailer

setReadReceipt()source public

setReadReceipt( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setReplyTo()source public

setReplyTo( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setReturnPath()source public

setReturnPath( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setSender()source public

setSender( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setSubject()source public

setSubject( $subject )

Parameters

$subject

Returns

Cake\Mailer\Mailer

setTemplate()source public

setTemplate( $template )

Parameters

$template

Returns

Cake\Mailer\Mailer

setTheme()source public

setTheme( $theme )

Parameters

$theme

Returns

Cake\Mailer\Mailer

setTo()source public

setTo( $email , $name = )

Parameters

$email
$name optional

Returns

Cake\Mailer\Mailer

setTransport()source public

setTransport( $name )

Parameters

$name

Returns

Cake\Mailer\Mailer

setViewRenderer()source public

setViewRenderer( $viewClass )

Parameters

$viewClass

Returns

Cake\Mailer\Mailer

setViewVars()source public

setViewVars( $viewVars )

Parameters

$viewVars

Returns

Cake\Mailer\Mailer

subject()source public

subject( $subject = )

Parameters

$subject optional

Returns

Cake\Mailer\Mailer

template()source public

template( $template = , $layout = )

Parameters

$template optional
$layout optional

Returns

Cake\Mailer\Mailer

theme()source public

theme( $theme = )

Parameters

$theme optional

Returns

Cake\Mailer\Mailer

to()source public

to( $email = , $name = )

Parameters

$email optional
$name optional

Returns

Cake\Mailer\Mailer

transport()source public

transport( $name = )

Parameters

$name optional

Returns

Cake\Mailer\Mailer

viewRender()source public

viewRender( $viewClass = )

Parameters

$viewClass optional

Returns

Cake\Mailer\Mailer

viewVars()source public

viewVars( $viewVars = )

Parameters

$viewVars optional

Returns

Cake\Mailer\Mailer

Properties detail

$_clonedEmailsource

protected Cake\Mailer\Email

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–present 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.8/class-Cake.Mailer.Mailer.html