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
->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
Properties summary
-
$_clonedEmailprotectedCloned 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.
- Sets 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|mixed
__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 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
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
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.
getModelType()source public
getModelType( )
Get the model type to be used by this class
Returns
stringloadModel()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 )
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
$modelTypeoptional 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\MaileraddBcc()source public
addBcc( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MaileraddCc()source public
addCc( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MaileraddHeaders()source public
addHeaders( array $headers )
Parameters
-
array
$headers
Returns
Cake\Mailer\MaileraddTo()source public
addTo( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\Mailerattachments()source public
attachments( $attachments = )
Parameters
$attachmentsoptional
Returns
Cake\Mailer\Mailerbcc()source public
bcc( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Mailercc()source public
cc( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Mailercharset()source public
charset( $charset = )
Parameters
$charsetoptional
Returns
Cake\Mailer\Mailerdomain()source public
domain( $domain = )
Parameters
$domainoptional
Returns
Cake\Mailer\MaileremailFormat()source public
emailFormat( $format = )
Parameters
$formatoptional
Returns
Cake\Mailer\MaileremailPattern()source public
emailPattern( $regex = )
Parameters
$regexoptional
Returns
Cake\Mailer\Mailerfrom()source public
from( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\MailergetAttachments()source public
getAttachments( )
Returns
getBcc()source public
getBcc( )
Returns
getCc()source public
getCc( )
Returns
getCharset()source public
getCharset( )
Returns
getDomain()source public
getDomain( )
Returns
getEmailFormat()source public
getEmailFormat( )
Returns
getEmailPattern()source public
getEmailPattern( )
Returns
getFrom()source public
getFrom( )
Returns
getHeaderCharset()source public
getHeaderCharset( )
Returns
getHeaders()source public
getHeaders( array $include = )
Parameters
-
array
$includeoptional
Returns
Cake\Mailer\MailergetHelpers()source public
getHelpers( )
Returns
getLayout()source public
getLayout( )
Returns
getMessageId()source public
getMessageId( )
Returns
getProfile()source public
getProfile( )
Returns
getReadReceipt()source public
getReadReceipt( )
Returns
getReplyTo()source public
getReplyTo( )
Returns
getReturnPath()source public
getReturnPath( )
Returns
getSender()source public
getSender( )
Returns
getSubject()source public
getSubject( )
Returns
getTemplate()source public
getTemplate( )
Returns
getTheme()source public
getTheme( )
Returns
getTo()source public
getTo( )
Returns
getTransport()source public
getTransport( )
Returns
Cake\Mailer\AbstractTransportgetViewRenderer()source public
getViewRenderer( )
Returns
getViewVars()source public
getViewVars( )
Returns
headerCharset()source public
headerCharset( $charset = )
Parameters
$charsetoptional
Returns
Cake\Mailer\Mailerhelpers()source public
helpers( $helpers = )
Parameters
$helpersoptional
Returns
Cake\Mailer\Mailermessage()source public
message( $type = )
Parameters
$typeoptional
Returns
Cake\Mailer\MailermessageId()source public
messageId( $message = )
Parameters
$messageoptional
Returns
Cake\Mailer\Mailerprofile()source public
profile( $config = )
Parameters
$configoptional
Returns
Cake\Mailer\MailerreadReceipt()source public
readReceipt( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\MailerreplyTo()source public
replyTo( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\MailerreturnPath()source public
returnPath( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Mailersender()source public
sender( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\MailersetAttachments()source public
setAttachments( $attachments )
Parameters
$attachments
Returns
Cake\Mailer\MailersetBcc()source public
setBcc( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetCc()source public
setCc( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetCharset()source public
setCharset( $charset )
Parameters
$charset
Returns
Cake\Mailer\MailersetDomain()source public
setDomain( $domain )
Parameters
$domain
Returns
Cake\Mailer\MailersetEmailFormat()source public
setEmailFormat( $format )
Parameters
$format
Returns
Cake\Mailer\MailersetEmailPattern()source public
setEmailPattern( $regex )
Parameters
$regex
Returns
Cake\Mailer\MailersetFrom()source public
setFrom( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetHeaderCharset()source public
setHeaderCharset( $charset )
Parameters
$charset
Returns
Cake\Mailer\MailersetHeaders()source public
setHeaders( array $headers )
Parameters
-
array
$headers
Returns
Cake\Mailer\MailersetHelpers()source public
setHelpers( array $helpers )
Parameters
-
array
$helpers
Returns
Cake\Mailer\MailersetLayout()source public
setLayout( $layout )
Parameters
$layout
Returns
Cake\Mailer\MailersetMessageId()source public
setMessageId( $message )
Parameters
$message
Returns
Cake\Mailer\MailersetProfile()source public
setProfile( $config )
Parameters
$config
Returns
Cake\Mailer\MailersetReadReceipt()source public
setReadReceipt( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetReplyTo()source public
setReplyTo( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetReturnPath()source public
setReturnPath( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetSender()source public
setSender( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetSubject()source public
setSubject( $subject )
Parameters
$subject
Returns
Cake\Mailer\MailersetTemplate()source public
setTemplate( $template )
Parameters
$template
Returns
Cake\Mailer\MailersetTheme()source public
setTheme( $theme )
Parameters
$theme
Returns
Cake\Mailer\MailersetTo()source public
setTo( $email , $name = )
Parameters
$email$nameoptional
Returns
Cake\Mailer\MailersetTransport()source public
setTransport( $name )
Parameters
$name
Returns
Cake\Mailer\MailersetViewRenderer()source public
setViewRenderer( $viewClass )
Parameters
$viewClass
Returns
Cake\Mailer\MailersetViewVars()source public
setViewVars( $viewVars )
Parameters
$viewVars
Returns
Cake\Mailer\Mailersubject()source public
subject( $subject = )
Parameters
$subjectoptional
Returns
Cake\Mailer\Mailertemplate()source public
template( $template = , $layout = )
Parameters
$templateoptional$layoutoptional
Returns
Cake\Mailer\Mailertheme()source public
theme( $theme = )
Parameters
$themeoptional
Returns
Cake\Mailer\Mailerto()source public
to( $email = , $name = )
Parameters
$emailoptional$nameoptional
Returns
Cake\Mailer\Mailertransport()source public
transport( $name = )
Parameters
$nameoptional
Returns
Cake\Mailer\MailerviewRender()source public
viewRender( $viewClass = )
Parameters
$viewClassoptional
Returns
Cake\Mailer\MailerviewVars()source public
viewVars( $viewVars = )
Parameters
$viewVarsoptional
Returns
Cake\Mailer\MailerProperties detail
$_clonedEmailsource
protected Cake\Mailer\Email
Cloned Email instance for restoring instance after email is sent by mailer action.
© 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.7/class-Cake.Mailer.Mailer.html