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
$email
optional null - Email instance.
getNamesource public
getName( )
Returns the mailer's name.
Returns
string
string
layoutsource public
layout( string $layout )
Sets layout to use.
Parameters
- string
$layout
- Name of the layout to use.
Returns
mixed
$this object.
resetsource protected
reset( )
Reset email instance.
Returns
mixed
$this
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
array
Throws
Cake\Mailer\Exception\MissingActionException
\Cake\Mailer\Exception\MissingActionException
BadMethodCallException
\BadMethodCallException
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
mixed
$this object.
_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
$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
object
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
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
$modelType
optional null - The model type or null to retrieve the current
Returns
string|$this
$this
Magic methods summary
addAttachmentssource public
addAttachments( mixed $attachments )
Parameters
- mixed
$attachments
optional
Returns
Cake\Mailer\Email
Email
addBccsource public
addBcc( mixed $email , mixed $name null )
Parameters
- mixed
$email
optional - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
addCc( mixed $email , mixed $name null )
Parameters
- mixed
$email
optional - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
addHeaderssource public
addHeaders( array $headers )
Parameters
- array
$headers
optional
Returns
Cake\Mailer\Email
Email
addTo( mixed $email , mixed $name null )
Parameters
- mixed
$email
optional - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
attachmentssource public
attachments( mixed $attachments null )
Parameters
- mixed
$attachments
optional null
Returns
Cake\Mailer\Email
Email
bcc( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
cc( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
charsetsource public
charset( mixed $charset null )
Parameters
- mixed
$charset
optional null
Returns
Cake\Mailer\Email
Email
domainsource public
domain( mixed $domain null )
Parameters
- mixed
$domain
optional null
Returns
Cake\Mailer\Email
Email
emailFormatsource public
emailFormat( mixed $format null )
Parameters
- mixed
$format
optional null
Returns
Cake\Mailer\Email
Email
from( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
getHeaderssource public
getHeaders( array $include [] )
Parameters
- array
$include
optional []
Returns
Cake\Mailer\Email
Email
headerCharsetsource public
headerCharset( mixed $charset null )
Parameters
- mixed
$charset
optional null
Returns
Cake\Mailer\Email
Email
helperssource public
helpers( mixed $helpers null )
Parameters
- mixed
$helpers
optional null
Returns
Cake\Mailer\Email
Email
messagesource public
message( mixed $type null )
Parameters
- mixed
$type
optional null
Returns
Cake\Mailer\Email
Email
messageIdsource public
messageId( mixed $message null )
Parameters
- mixed
$message
optional null
Returns
Cake\Mailer\Email
Email
profilesource public
profile( mixed $config null )
Parameters
- mixed
$config
optional null
Returns
Cake\Mailer\Email
Email
readReceiptsource public
readReceipt( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
replyTosource public
replyTo( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
returnPathsource public
returnPath( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
sendersource public
sender( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
setHeaderssource public
setHeaders( array $headers )
Parameters
- array
$headers
optional
Returns
Cake\Mailer\Email
Email
subjectsource public
subject( mixed $subject null )
Parameters
- mixed
$subject
optional null
Returns
Cake\Mailer\Email
Email
templatesource public
template( mixed $template false , mixed $layout false )
Parameters
- mixed
$template
optional false - mixed
$layout
optional false
Returns
Cake\Mailer\Email
Email
theme( mixed $theme null )
Parameters
- mixed
$theme
optional null
Returns
Cake\Mailer\Email
Email
to( mixed $email null , mixed $name null )
Parameters
- mixed
$email
optional null - mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
transportsource public
transport( mixed $name null )
Parameters
- mixed
$name
optional null
Returns
Cake\Mailer\Email
Email
viewRendersource public
viewRender( mixed $viewClass null )
Parameters
- mixed
$viewClass
optional null
Returns
Cake\Mailer\Email
Email
viewVarssource public
viewVars( mixed $viewVars null )
Parameters
- mixed
$viewVars
optional null
Returns
Cake\Mailer\Email
Email
Properties summary
$_clonedEmailsource
protected string
Cloned Email instance for restoring instance after email is sent by mailer action.
public static string
Mailer's name.
$_modelFactoriessource
protected array
A list of model factory functions.
protected string
The model type to use.
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.