On this page
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
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- $emailoptional null
- Email instance.
implementedEventssource public
implementedEvents( )Implemented events.
Returns
arrayarray
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.
sendsource public
send( string $action , array $args [] , array $headers [] )Sends email.
Parameters
- 
     string $action
- The name of the mailer action to trigger.
- 
     array $argsoptional []
- Arguments to pass to the triggered mailer action.
- 
     array $headersoptional []
- Headers to set.
Returns
arrayarray
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 $valueoptional 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 $modelClassoptional null
- Name of model class to load. Defaults to $this->modelClass
- 
     string|null $modelTypeoptional null
- The type of repository to load. Defaults to the modelType() value.
Returns
objectThe model instance created.
Throws
Cake\Datasource\Exception\MissingModelExceptionIf the model class cannot be found.
InvalidArgumentExceptionWhen using a type that has not been registered.
UnexpectedValueExceptionIf 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 $modelTypeoptional null
- The model type or null to retrieve the current
Returns
string|$this$this
Magic methods summary
addAttachmentssource public
addAttachments( mixed $attachments )Parameters
- 
    mixed $attachmentsoptional
Returns
Cake\Mailer\EmailaddBccsource public
addBcc( mixed $email , mixed $name null )Parameters
- 
    mixed $emailoptional
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailaddCcsource public
addCc( mixed $email , mixed $name null )Parameters
- 
    mixed $emailoptional
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailaddHeaderssource public
addHeaders( array $headers )Parameters
- 
    array $headersoptional
Returns
Cake\Mailer\EmailaddTosource public
addTo( mixed $email , mixed $name null )Parameters
- 
    mixed $emailoptional
- 
    mixed $nameoptional null
Returns
Cake\Mailer\Emailattachmentssource public
attachments( mixed $attachments null )Parameters
- 
    mixed $attachmentsoptional null
Returns
Cake\Mailer\Emailbccsource public
bcc( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\Emailccsource public
cc( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\Emailcharsetsource public
charset( mixed $charset null )Parameters
- 
    mixed $charsetoptional null
Returns
Cake\Mailer\Emaildomainsource public
domain( mixed $domain null )Parameters
- 
    mixed $domainoptional null
Returns
Cake\Mailer\EmailemailFormatsource public
emailFormat( mixed $format null )Parameters
- 
    mixed $formatoptional null
Returns
Cake\Mailer\Emailfromsource public
from( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailgetHeaderssource public
getHeaders( array $include [] )Parameters
- 
    array $includeoptional []
Returns
Cake\Mailer\EmailheaderCharsetsource public
headerCharset( mixed $charset null )Parameters
- 
    mixed $charsetoptional null
Returns
Cake\Mailer\Emailhelperssource public
helpers( mixed $helpers null )Parameters
- 
    mixed $helpersoptional null
Returns
Cake\Mailer\Emailmessagesource public
message( mixed $type null )Parameters
- 
    mixed $typeoptional null
Returns
Cake\Mailer\EmailmessageIdsource public
messageId( mixed $message null )Parameters
- 
    mixed $messageoptional null
Returns
Cake\Mailer\Emailprofilesource public
profile( mixed $config null )Parameters
- 
    mixed $configoptional null
Returns
Cake\Mailer\EmailreadReceiptsource public
readReceipt( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailreplyTosource public
replyTo( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailreturnPathsource public
returnPath( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\Emailsendersource public
sender( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailsetHeaderssource public
setHeaders( array $headers )Parameters
- 
    array $headersoptional
Returns
Cake\Mailer\Emailsubjectsource public
subject( mixed $subject null )Parameters
- 
    mixed $subjectoptional null
Returns
Cake\Mailer\Emailtemplatesource public
template( mixed $template false , mixed $layout false )Parameters
- 
    mixed $templateoptional false
- 
    mixed $layoutoptional false
Returns
Cake\Mailer\Emailthemesource public
theme( mixed $theme null )Parameters
- 
    mixed $themeoptional null
Returns
Cake\Mailer\Emailtosource public
to( mixed $email null , mixed $name null )Parameters
- 
    mixed $emailoptional null
- 
    mixed $nameoptional null
Returns
Cake\Mailer\Emailtransportsource public
transport( mixed $name null )Parameters
- 
    mixed $nameoptional null
Returns
Cake\Mailer\EmailviewRendersource public
viewRender( mixed $viewClass null )Parameters
- 
    mixed $viewClassoptional null
Returns
Cake\Mailer\EmailviewVarssource public
viewVars( mixed $viewVars null )Parameters
- 
    mixed $viewVarsoptional null
Returns
Cake\Mailer\EmailProperties summary
$_clonedEmailsource
protected string
Cloned Email instance for restoring instance after email is sent by mailer action.
Properties used from Cake\Datasource\ModelAwareTrait
$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