\Cake\MailerMailer

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.

Summary

Methods
Properties
Constants
loadModel()
modelFactory()
getModelType()
setModelType()
modelType()
__construct()
getName()
layout()
viewBuilder()
__call()
set()
send()
implementedEvents()
setTo()
getTo()
to()
setFrom()
getFrom()
from()
setSender()
getSender()
sender()
setReplyTo()
getReplyTo()
replyTo()
setReadReceipt()
getReadReceipt()
readReceipt()
setReturnPath()
getReturnPath()
returnPath()
addTo()
setCc()
getCc()
cc()
addCc()
setBcc()
getBcc()
bcc()
addBcc()
setCharset()
getCharset()
charset()
setHeaderCharset()
getHeaderCharset()
headerCharset()
setSubject()
getSubject()
subject()
setHeaders()
addHeaders()
getHeaders()
setTemplate()
getTemplate()
setLayout()
getLayout()
template()
setViewRenderer()
getViewRenderer()
viewRender()
setViewVars()
getViewVars()
viewVars()
setTheme()
getTheme()
theme()
setHelpers()
getHelpers()
helpers()
setEmailFormat()
getEmailFormat()
emailFormat()
setTransport()
getTransport()
transport()
setMessageId()
getMessageId()
messageId()
setDomain()
getDomain()
domain()
setAttachments()
getAttachments()
attachments()
addAttachments()
message()
setProfile()
getProfile()
profile()
$modelClass
$name
No constants found
_setModelClass()
reset()
$_modelFactories
$_modelType
$_email
$_clonedEmail
N/A
No private methods found
No private properties found
N/A

Properties

$modelClass

$modelClass : 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.

Type

string

$name

$name : string

Mailer's name.

Type

string

$_modelFactories

$_modelFactories : array

A list of overridden model factory functions.

Type

array

$_modelType

$_modelType : string

The model type to use.

Type

string

$_clonedEmail

$_clonedEmail : \Cake\Mailer\Email

Cloned Email instance for restoring instance after email is sent by mailer action.

Type

\Cake\Mailer\Email

Methods

loadModel()

loadModel(string|null  $modelClass = null, string|null  $modelType = null) : \Cake\Datasource\RepositoryInterface

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

Name of model class to load. Defaults to $this->modelClass

string|null $modelType

The type of repository to load. Defaults to the modelType() value.

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

Returns

\Cake\Datasource\RepositoryInterface

The model instance created.

modelFactory()

modelFactory(string  $type, callable  $factory) : void

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.

getModelType()

getModelType() : string

Get the model type to be used by this class

Returns

string

setModelType()

setModelType(string  $modelType) : $this

Set the model type to be used by this class

Parameters

string $modelType

The model type

Returns

$this

modelType()

modelType(string|null  $modelType = null) : string|$this

Set or get the model type to be used by this class

Parameters

string|null $modelType

The model type or null to retrieve the current

Returns

string|$this

__construct()

__construct(\Cake\Mailer\Email|null  $email = null) 

Constructor.

Parameters

\Cake\Mailer\Email|null $email

Email instance.

getName()

getName() : string

Returns the mailer's name.

Returns

string

layout()

layout(string  $layout) : $this

Sets layout to use.

Parameters

string $layout

Name of the layout to use.

Returns

$this

viewBuilder()

viewBuilder() : \Cake\View\ViewBuilder

Get Email instance's view builder.

Returns

\Cake\View\ViewBuilder

__call()

__call(string  $method, array  $args) : $this|mixed

Magic method to forward method class to Email instance.

Parameters

string $method

Method name.

array $args

Method arguments

Returns

$this|mixed

set()

set(string|array  $key, mixed  $value = null) : $this

Sets email view vars.

Parameters

string|array $key

Variable name or hash of view variables.

mixed $value

View variable value.

Returns

$this

send()

send(string  $action, array  $args = array(), array  $headers = array()) : array

Sends email.

Parameters

string $action

The name of the mailer action to trigger.

array $args

Arguments to pass to the triggered mailer action.

array $headers

Headers to set.

Throws

\Cake\Mailer\Exception\MissingActionException
\BadMethodCallException

Returns

array

implementedEvents()

implementedEvents() : array

Implemented events.

Example:

 public function implementedEvents()
 {
     return [
         'Order.complete' => 'sendEmail',
         'Article.afterBuy' => 'decrementInventory',
         'User.onRegister' => ['callable' => 'logRegistration', 'priority' => 20, 'passParams' => true]
     ];
 }

Returns

array

setTo()

setTo(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getTo()

getTo() : array

Returns

array

to()

to(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setFrom()

setFrom(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getFrom()

getFrom() : array

Returns

array

from()

from(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setSender()

setSender(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getSender()

getSender() : array

Returns

array

sender()

sender(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setReplyTo()

setReplyTo(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getReplyTo()

getReplyTo() : array

Returns

array

replyTo()

replyTo(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setReadReceipt()

setReadReceipt(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getReadReceipt()

getReadReceipt() : array

Returns

array

readReceipt()

readReceipt(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setReturnPath()

setReturnPath(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getReturnPath()

getReturnPath() : array

Returns

array

returnPath()

returnPath(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

addTo()

addTo(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setCc()

setCc(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getCc()

getCc() : array

Returns

array

cc()

cc(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

addCc()

addCc(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setBcc()

setBcc(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

getBcc()

getBcc() : array

Returns

array

bcc()

bcc(mixed  $email = null, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

addBcc()

addBcc(mixed  $email, mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $email
mixed $name

Returns

\Cake\Mailer\Email

setCharset()

setCharset(mixed  $charset) : \Cake\Mailer\Email

Parameters

mixed $charset

Returns

\Cake\Mailer\Email

getCharset()

getCharset() : string

Returns

string

charset()

charset(mixed  $charset = null) : \Cake\Mailer\Email

Parameters

mixed $charset

Returns

\Cake\Mailer\Email

setHeaderCharset()

setHeaderCharset(mixed  $charset) : \Cake\Mailer\Email

Parameters

mixed $charset

Returns

\Cake\Mailer\Email

getHeaderCharset()

getHeaderCharset() : string

Returns

string

headerCharset()

headerCharset(mixed  $charset = null) : \Cake\Mailer\Email

Parameters

mixed $charset

Returns

\Cake\Mailer\Email

setSubject()

setSubject(mixed  $subject) : \Cake\Mailer\Email

Parameters

mixed $subject

Returns

\Cake\Mailer\Email

getSubject()

getSubject() : string

Returns

string

subject()

subject(mixed  $subject = null) : \Cake\Mailer\Email

Parameters

mixed $subject

Returns

\Cake\Mailer\Email

setHeaders()

setHeaders(array  $headers) : \Cake\Mailer\Email

Parameters

array $headers

Returns

\Cake\Mailer\Email

addHeaders()

addHeaders(array  $headers) : \Cake\Mailer\Email

Parameters

array $headers

Returns

\Cake\Mailer\Email

getHeaders()

getHeaders(array  $include = []) : \Cake\Mailer\Email

Parameters

array $include

Returns

\Cake\Mailer\Email

setTemplate()

setTemplate(mixed  $template) : \Cake\Mailer\Email

Parameters

mixed $template

Returns

\Cake\Mailer\Email

getTemplate()

getTemplate() : string

Returns

string

setLayout()

setLayout(mixed  $layout) : \Cake\Mailer\Email

Parameters

mixed $layout

Returns

\Cake\Mailer\Email

getLayout()

getLayout() : string

Returns

string

template()

template(mixed  $template = false, mixed  $layout = false) : \Cake\Mailer\Email

Parameters

mixed $template
mixed $layout

Returns

\Cake\Mailer\Email

setViewRenderer()

setViewRenderer(mixed  $viewClass) : \Cake\Mailer\Email

Parameters

mixed $viewClass

Returns

\Cake\Mailer\Email

getViewRenderer()

getViewRenderer() : string

Returns

string

viewRender()

viewRender(mixed  $viewClass = null) : \Cake\Mailer\Email

Parameters

mixed $viewClass

Returns

\Cake\Mailer\Email

setViewVars()

setViewVars(mixed  $viewVars) : \Cake\Mailer\Email

Parameters

mixed $viewVars

Returns

\Cake\Mailer\Email

getViewVars()

getViewVars() : array

Returns

array

viewVars()

viewVars(mixed  $viewVars = null) : \Cake\Mailer\Email

Parameters

mixed $viewVars

Returns

\Cake\Mailer\Email

setTheme()

setTheme(mixed  $theme) : \Cake\Mailer\Email

Parameters

mixed $theme

Returns

\Cake\Mailer\Email

getTheme()

getTheme() : string

Returns

string

theme()

theme(mixed  $theme = null) : \Cake\Mailer\Email

Parameters

mixed $theme

Returns

\Cake\Mailer\Email

setHelpers()

setHelpers(array  $helpers) : \Cake\Mailer\Email

Parameters

array $helpers

Returns

\Cake\Mailer\Email

getHelpers()

getHelpers() : array

Returns

array

helpers()

helpers(mixed  $helpers = null) : \Cake\Mailer\Email

Parameters

mixed $helpers

Returns

\Cake\Mailer\Email

setEmailFormat()

setEmailFormat(mixed  $format) : \Cake\Mailer\Email

Parameters

mixed $format

Returns

\Cake\Mailer\Email

getEmailFormat()

getEmailFormat() : string

Returns

string

emailFormat()

emailFormat(mixed  $format = null) : \Cake\Mailer\Email

Parameters

mixed $format

Returns

\Cake\Mailer\Email

setTransport()

setTransport(mixed  $name) : \Cake\Mailer\Email

Parameters

mixed $name

Returns

\Cake\Mailer\Email

getTransport()

getTransport() : \Cake\Mailer\AbstractTransport

Returns

\Cake\Mailer\AbstractTransport

transport()

transport(mixed  $name = null) : \Cake\Mailer\Email

Parameters

mixed $name

Returns

\Cake\Mailer\Email

setMessageId()

setMessageId(mixed  $message) : \Cake\Mailer\Email

Parameters

mixed $message

Returns

\Cake\Mailer\Email

getMessageId()

getMessageId() : boolean|string

Returns

boolean|string

messageId()

messageId(mixed  $message = null) : \Cake\Mailer\Email

Parameters

mixed $message

Returns

\Cake\Mailer\Email

setDomain()

setDomain(mixed  $domain) : \Cake\Mailer\Email

Parameters

mixed $domain

Returns

\Cake\Mailer\Email

getDomain()

getDomain() : string

Returns

string

domain()

domain(mixed  $domain = null) : \Cake\Mailer\Email

Parameters

mixed $domain

Returns

\Cake\Mailer\Email

setAttachments()

setAttachments(mixed  $attachments) : \Cake\Mailer\Email

Parameters

mixed $attachments

Returns

\Cake\Mailer\Email

getAttachments()

getAttachments() : array

Returns

array

attachments()

attachments(mixed  $attachments = null) : \Cake\Mailer\Email

Parameters

mixed $attachments

Returns

\Cake\Mailer\Email

addAttachments()

addAttachments(mixed  $attachments) : \Cake\Mailer\Email

Parameters

mixed $attachments

Returns

\Cake\Mailer\Email

message()

message(mixed  $type = null) : \Cake\Mailer\Email

Parameters

mixed $type

Returns

\Cake\Mailer\Email

setProfile()

setProfile(mixed  $config) : \Cake\Mailer\Email

Parameters

mixed $config

Returns

\Cake\Mailer\Email

getProfile()

getProfile() : string|array

Returns

string|array

profile()

profile(mixed  $config = null) : \Cake\Mailer\Email

Parameters

mixed $config

Returns

\Cake\Mailer\Email

_setModelClass()

_setModelClass(string  $name) : void

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.

reset()

reset() : $this

Reset email instance.

Returns

$this