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
-
$_clonedEmailprotectedstringCloned Email instance for restoring instance after email is sent by mailer action.
-
Email instance.
$_emailprotected -
Mailer's name.
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$emailoptional 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
$argsoptional [] - Arguments to pass to the triggered mailer action.
-
array
$headersoptional [] - Headers to set.
Returns
arrayThrows
Cake\Mailer\Exception\MissingActionExceptionBadMethodCallException
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
$valueoptional null - View variable value.
Returns
$this object.
viewBuilder()source public
viewBuilder( )
Get Email instance's view builder.
Returns
Cake\View\ViewBuilderMethods 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
$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
Cake\Datasource\RepositoryInterfaceThe model instance created.
Throws
Cake\Datasource\Exception\MissingModelExceptionIf 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
$modelTypeoptional 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\EmailaddBcc()source public
addBcc( $email , $name )
Parameters
$email$nameoptional
Returns
Cake\Mailer\EmailaddCc()source public
addCc( $email , $name )
Parameters
$email$nameoptional
Returns
Cake\Mailer\EmailaddHeaders()source public
addHeaders( array $headers )
Parameters
-
array
$headers
Returns
Cake\Mailer\EmailaddTo()source public
addTo( $email , $name )
Parameters
$email$nameoptional
Returns
Cake\Mailer\Emailattachments()source public
attachments( $attachments )
Parameters
$attachmentsoptional
Returns
Cake\Mailer\Emailbcc()source public
bcc( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Emailcc()source public
cc( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Emailcharset()source public
charset( $charset )
Parameters
$charsetoptional
Returns
Cake\Mailer\Emaildomain()source public
domain( $domain )
Parameters
$domainoptional
Returns
Cake\Mailer\EmailemailFormat()source public
emailFormat( $format )
Parameters
$formatoptional
Returns
Cake\Mailer\Emailfrom()source public
from( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\EmailgetHeaders()source public
getHeaders( array $include )
Parameters
-
array
$includeoptional
Returns
Cake\Mailer\EmailheaderCharset()source public
headerCharset( $charset )
Parameters
$charsetoptional
Returns
Cake\Mailer\Emailhelpers()source public
helpers( $helpers )
Parameters
$helpersoptional
Returns
Cake\Mailer\Emailmessage()source public
message( $type )
Parameters
$typeoptional
Returns
Cake\Mailer\EmailmessageId()source public
messageId( $message )
Parameters
$messageoptional
Returns
Cake\Mailer\Emailprofile()source public
profile( $config )
Parameters
$configoptional
Returns
Cake\Mailer\EmailreadReceipt()source public
readReceipt( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\EmailreplyTo()source public
replyTo( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\EmailreturnPath()source public
returnPath( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Emailsender()source public
sender( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\EmailsetHeaders()source public
setHeaders( array $headers )
Parameters
-
array
$headers
Returns
Cake\Mailer\Emailsubject()source public
subject( $subject )
Parameters
$subjectoptional
Returns
Cake\Mailer\Emailtemplate()source public
template( $template , $layout )
Parameters
$templateoptional$layoutoptional
Returns
Cake\Mailer\Emailtheme()source public
theme( $theme )
Parameters
$themeoptional
Returns
Cake\Mailer\Emailto()source public
to( $email , $name )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Emailtransport()source public
transport( $name )
Parameters
$nameoptional
Returns
Cake\Mailer\EmailviewRender()source public
viewRender( $viewClass )
Parameters
$viewClassoptional
Returns
Cake\Mailer\EmailviewVars()source public
viewVars( $viewVars )
Parameters
$viewVarsoptional
Returns
Cake\Mailer\EmailProperties 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