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
Properties summary
-
$_clonedEmail
protectedstring
Cloned Email instance for restoring instance after email is sent by mailer action.
-
Email instance.
$_email
protected -
string
Inherited Properties
Method Summary
-
__call() publicMagic method to forward method class to Email instance.
-
__construct() publicConstructor.
-
getName() publicReturns the mailer's name.
-
implementedEvents() publicImplemented events.
-
layout() publicSets layout to use.
-
reset() protectedReset email instance.
-
send() publicSends email.
-
set() publicSets email view vars.
-
viewBuilder() publicGet Email instance's view builder.
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.
implementedEvents()source public
implementedEvents( )
Implemented events.
Returns
arrayImplementation of
Cake\Event\EventListenerInterface::implementedEvents()
layout()source public
layout( string $layout )
Sets layout to use.
Parameters
-
string
$layout
- Name of the layout to use.
Returns
$this object.
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
arrayThrows
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 object.
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 )
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.
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.
© 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.2/class-Cake.Mailer.Mailer.html