Class Email
CakePHP Email class.
This class is used for sending Internet Message Format based on the standard outlined in https://www.rfc-editor.org/rfc/rfc2822.txt
Configuration
Configuration for Email is managed by Email::config() and Email::configTransport(). Email::config() can be used to add or read a configuration profile for Email instances. Once made configuration profiles can be used to re-use across various email messages your application sends.
- Cake\Mailer\Email implements JsonSerializable, Serializable uses Cake\Core\StaticConfigTrait , Cake\View\ViewVarsTrait
Constants summary
-
string
'/^((?:[\p{L}0-9.!#$%&\'*+\/=?^_`{|}~-]+)*@[\p{L}0-9-.]+)$/ui'
-
integer
998
-
integer
78
-
string
'html'
-
string
'text'
Properties summary
-
$_appCharset
protectedThe application wide charset, used to encode headers and bodystring|null
-
$_attachments
protectedList of files that should be attached to the email.array
-
$_bcc
protectedBlind Carbon Copyarray
-
$_boundary
protectedIf set, boundary to use for multipart mime messagesstring|null
-
$_cc
protectedCarbon Copyarray
-
$_charset8bit
protected8Bit character setsarray
-
$_contentTypeCharset
protectedDefine Content-Type charset namearray
-
$_domain
protectedstring
Domain for messageId generation. Needs to be manually set for CLI mailing as env('HTTP_HOST') is empty
- An array mapping url schemes to fully qualified Transport class names
array
-
$_emailFormat
protectedWhat format should the email be sent instring
-
$_emailFormatAvailable
protectedAvailable formats to be sent.array
-
$_emailPattern
protectedRegex for email validationstring
-
$_from
protectedThe mail which the email is sent fromarray
-
$_headers
protectedarray
Associative array of a user defined headers Keys will be prefixed 'X-' as per RFC2822 Section 4.7.5
-
$_htmlMessage
protectedHtml messagestring
-
$_message
protectedFinal message to sendarray
-
$_messageId
protectedMessage IDboolean|string
-
$_priority
protectedContains the optional priority of the email.integer|null
-
$_profile
protectedarray
A copy of the configuration profile for this instance. This copy can be modified with Email::profile().
-
$_readReceipt
protectedThe read receipt emailarray
-
$_replyTo
protectedThe email the recipient will reply toarray
-
$_returnPath
protectedarray
The mail that will be used in case of any errors like - Remote mailserver down - Remote user has exceeded his quota - Unknown user
-
$_sender
protectedThe sender emailarray
-
$_subject
protectedThe subject of the emailstring
-
$_textMessage
protectedText messagestring
-
$_to
protectedRecipient of the emailarray
-
$_transport
protected - Configuration profiles for transports.
array
-
$charset
publicCharset the email body is sent instring
-
$headerCharset
publicstring|null
Charset the email header is sent in If null, the $charset property will be used as default
Inherited Magic Properties
Inherited Properties
Method Summary
- __clone() publicClone ViewBuilder instance when email object is cloned.
- __construct() publicConstructor
- _addEmail() protectedAdd email
- _applyConfig() protectedApply the config to an instance
- _attachFiles() protectedAttach non-embedded files by adding file contents inside boundaries.
- _attachInlineFiles() protectedAttach inline/embedded files to the message.
- _checkViewVars() protectedIterates through hash to clean up and normalize.
- _constructTransport() protectedBuild a transport instance from configuration data.
- _createBoundary() protectedCreate unique boundary identifier
- _decode() protectedDecode the specified string
- _encode() protectedEncode the specified string using the current charset
- _encodeString() protected
Translates a string for one charset to another if the App.encoding value differs and the mb_convert_encoding function exists
- _formatAddress() protectedFormat addresses
- _getContentTransferEncoding() protectedReturn the Content-Transfer Encoding value based on the set charset
- _getContentTypeCharset() protectedReturn charset value for Content-Type.
- _getTypes() protectedGets the text body types that are in this email message
- _logDelivery() protectedLog the email message delivery.
- _readFile() protectedRead the file contents and return a base64 version of the file contents.
- _render() protectedRender the body of the email.
- _renderTemplates() protected
Build and set all the view properties needed to render the templated emails. If there is no template set, the $content will be returned in a hash of the text content types for the email.
- _setEmail() protectedSet email
- _setEmailSingle() protectedSet only 1 email
- _validateEmail() protectedValidate email address
- _wrap() protectedWrap the message to follow the RFC 2822 - 2.1.1
- addAttachments() publicAdd attachments
- addBcc() publicAdd Bcc
- addCc() publicAdd Cc
- addHeaders() publicAdd header for the message
- addTo() publicAdd To
- attachments() publicAdd attachments to the email message
- bcc() publicBcc
- cc() publicCc
- charset() publicCharset setter/getter
- Add or read transport configuration.
- Returns an array containing the named transport configurations
- createFromArray() publicConfigures an email instance object from serialized config.
- Static method to fast create an instance of \Cake\Mailer\Email
- domain() publicDomain as top level (the part after @)
- Delete transport configuration.
- emailFormat() publicEmail format
- emailPattern() publicEmailPattern setter/getter
- from() publicFrom
- getAttachments() publicGets attachments to the email message.
- getBcc() publicGets "bcc" address.
- getCc() publicGets "cc" address.
- getCharset() publicCharset getter.
- Gets current transport configuration.
- getDomain() publicGets domain.
- getEmailFormat() publicGets email format.
- getEmailPattern() publicEmailPattern setter/getter
- getFrom() publicGets "from" address.
- getHeaderCharset() publicHeaderCharset getter.
- getHeaders() publicGet list of headers
- getHelpers() publicGets helpers to be used when rendering.
- getLayout() publicGets layout.
- getMessageId() publicGets message ID.
- getOriginalSubject() publicGet original subject without encoding
- getPriority() publicGets priority.
- getProfile() publicGets the configuration profile to use for this instance.
- getReadReceipt() publicGets Read Receipt (Disposition-Notification-To header).
- getReplyTo() publicGets "Reply-To" address.
- getReturnPath() publicGets return path.
- getSender() publicGets "sender" address.
- getSubject() publicGets subject.
- getTemplate() publicGets template.
- getTheme() publicGets theme to use when rendering.
- getTo() publicGets "to" address
- getTransport() publicGets the transport.
- getViewRenderer() publicGets view class for render.
- getViewVars() publicGets variables to be set on render.
- headerCharset() publicHeaderCharset setter/getter
- helpers() publicHelpers to be used in render
- jsonSerialize() public
Serializes the email object to a value that can be natively serialized and re-used to clone this email instance.
- message() publicGet generated message (used by transport classes)
- messageId() publicMessage-ID
- profile() publicGet/Set the configuration profile to use for this instance.
- readReceipt() publicRead Receipt (Disposition-Notification-To header)
- replyTo() publicReply-To
- reset() publicReset all the internal variables to be able to send out a new email.
- returnPath() publicReturn Path
- send() publicSend an email using the specified content, template and layout
- sender() publicSender
- serialize() publicSerializes the Email object.
- setAttachments() publicAdd attachments to the email message
- setBcc() publicSets "bcc" address.
- setCc() publicSets "cc" address.
- setCharset() publicCharset setter.
- Sets transport configuration.
- setDomain() publicSets domain.
- setEmailFormat() publicSets email format.
- setEmailPattern() publicEmailPattern setter/getter
- setFrom() publicSets "from" address.
- setHeaderCharset() publicHeaderCharset setter.
- setHeaders() publicSets headers for the message
- setHelpers() publicSets helpers to be used when rendering.
- setLayout() publicSets layout.
- setMessageId() publicSets message ID.
- setPriority() publicSets priority.
- setProfile() publicSets the configuration profile to use for this instance.
- setReadReceipt() publicSets Read Receipt (Disposition-Notification-To header).
- setReplyTo() publicSets "Reply-To" address.
- setReturnPath() publicReturn Path
- setSender() publicSets "sender" address.
- setSubject() publicSets subject.
- setTemplate() publicSets template.
- setTheme() publicSets theme to use when rendering.
- setTo() publicSets "to" address.
- setTransport() publicSets the transport.
- setViewRenderer() publicSets view class for render.
- setViewVars() publicSets variables to be set on render.
- subject() publicGet/Set Subject.
- template() publicTemplate and layout
- theme() publicTheme to use when rendering
- to() publicTo
- transport() publicGet/set the transport.
- unserialize() publicUnserializes the Email object.
- viewRender() publicView class for render
- viewVars() publicVariables to be set on render
Method Detail
__construct()source public
__construct( array|string|null $config null )
Constructor
Parameters
- array|string|null
$config
optional null - Array of configs, or string to load configs from email.php
_addEmail()source protected
_addEmail( string $varName , string|array $email , string $name )
Add email
Parameters
- string
$varName
- Property name
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string
$name
- Name
Returns
$this
Throws
InvalidArgumentException_applyConfig()source protected
_applyConfig( string|array $config )
Apply the config to an instance
Parameters
- string|array
$config
- Configuration options.
Throws
InvalidArgumentExceptionWhen using a configuration that doesn't exist.
_attachFiles()source protected
_attachFiles( string|null $boundary null )
Attach non-embedded files by adding file contents inside boundaries.
Parameters
- string|null
$boundary
optional null - Boundary to use. If null, will default to $this->_boundary
Returns
arrayAn array of lines to add to the message
_attachInlineFiles()source protected
_attachInlineFiles( string|null $boundary null )
Attach inline/embedded files to the message.
Parameters
- string|null
$boundary
optional null - Boundary to use. If null, will default to $this->_boundary
Returns
arrayAn array of lines to add to the message
_checkViewVars()source protected
_checkViewVars( mixed $item , string $key )
Iterates through hash to clean up and normalize.
Parameters
- mixed
$item
- Reference to the view var value.
- string
$key
- View var key.
_constructTransport()source protected
_constructTransport( string $name )
Build a transport instance from configuration data.
Parameters
- string
$name
- The transport configuration name to build.
Returns
Cake\Mailer\AbstractTransport
Throws
InvalidArgumentExceptionWhen transport configuration is missing or invalid.
_decode()source protected
_decode( string $text )
Decode the specified string
Parameters
- string
$text
- String to decode
Returns
stringDecoded string
_encode()source protected
_encode( string $text )
Encode the specified string using the current charset
Parameters
- string
$text
- String to encode
Returns
stringEncoded string
_encodeString()source protected
_encodeString( string $text , string $charset )
Translates a string for one charset to another if the App.encoding value differs and the mb_convert_encoding function exists
Parameters
- string
$text
- The text to be converted
- string
$charset
- the target encoding
Returns
string_formatAddress()source protected
_formatAddress( array $address )
Format addresses
If the address contains non alphanumeric/whitespace characters, it will be quoted as characters like :
and ,
are known to cause issues in address header fields.
Parameters
- array
$address
- Addresses to format.
Returns
array_getContentTransferEncoding()source protected
_getContentTransferEncoding( )
Return the Content-Transfer Encoding value based on the set charset
Returns
string_getContentTypeCharset()source protected
_getContentTypeCharset( )
Return charset value for Content-Type.
Checks fallback/compatibility types which include workarounds for legacy japanese character sets.
Returns
string_getTypes()source protected
_getTypes( )
Gets the text body types that are in this email message
Returns
arrayArray of types. Valid types are 'text' and 'html'
_logDelivery()source protected
_logDelivery( array $contents )
Log the email message delivery.
Parameters
- array
$contents
- The content with 'headers' and 'message' keys.
_readFile()source protected
_readFile( string $path )
Read the file contents and return a base64 version of the file contents.
Parameters
- string
$path
- The absolute path to the file to read.
Returns
stringFile contents in base64 encoding
_render()source protected
_render( array $content )
Render the body of the email.
Parameters
- array
$content
- Content to render
Returns
arrayEmail body ready to be sent
_renderTemplates()source protected
_renderTemplates( string $content )
Build and set all the view properties needed to render the templated emails. If there is no template set, the $content will be returned in a hash of the text content types for the email.
Parameters
- string
$content
- The content passed in from send() in most cases.
Returns
arrayThe rendered content with html and text keys.
_setEmail()source protected
_setEmail( string $varName , string|array $email , string $name )
Set email
Parameters
- string
$varName
- Property name
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string
$name
- Name
Returns
$this
Throws
InvalidArgumentException_setEmailSingle()source protected
_setEmailSingle( string $varName , string|array $email , string $name , string $throwMessage )
Set only 1 email
Parameters
- string
$varName
- Property name
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string
$name
- Name
- string
$throwMessage
- Exception message
Returns
$this
Throws
InvalidArgumentException_validateEmail()source protected
_validateEmail( string $email , string $context )
Validate email address
Parameters
- string
$email
- Email address to validate
- string
$context
- Which property was set
Throws
InvalidArgumentExceptionIf email address does not validate
_wrap()source protected
_wrap( string $message , integer $wrapLength Email::LINE_LENGTH_MUST )
Wrap the message to follow the RFC 2822 - 2.1.1
Parameters
- string
$message
- Message to wrap
- integer
$wrapLength
optional Email::LINE_LENGTH_MUST - The line length
Returns
arrayWrapped message
addAttachments()source public
addAttachments( string|array $attachments )
Add attachments
Parameters
- string|array
$attachments
- String with the filename or array with filenames
Returns
$this
Throws
InvalidArgumentExceptionSee
\Cake\Mailer\Email::attachments()addBcc()source public
addBcc( string|array $email , string|null $name null )
Add Bcc
Parameters
- string|array
$email
Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
addCc()source public
addCc( string|array $email , string|null $name null )
Add Cc
Parameters
- string|array
$email
Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
addHeaders()source public
addHeaders( array $headers )
Add header for the message
Parameters
- array
$headers
- Headers to set.
Returns
$this
addTo()source public
addTo( string|array $email , string|null $name null )
Add To
Parameters
- string|array
$email
Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
attachments()source public
attachments( string|array|null $attachments null )
Add attachments to the email message
Attachments can be defined in a few forms depending on how much control you need:
Attach a single file:
$email->attachments('path/to/file');
Attach a file with a different filename:
$email->attachments(['custom_name.txt' => 'path/to/file.txt']);
Attach a file and specify additional properties:
$email->attachments(['custom_name.png' => [ 'file' => 'path/to/file', 'mimetype' => 'image/png', 'contentId' => 'abc123', 'contentDisposition' => false ] ]);
Attach a file from string and specify additional properties:
$email->attachments(['custom_name.png' => [ 'data' => file_get_contents('path/to/file'), 'mimetype' => 'image/png' ] ]);
The contentId
key allows you to specify an inline attachment. In your email text, you can use <img src="cid:abc123" />
to display the image inline.
The contentDisposition
key allows you to disable the Content-Disposition
header, this can improve attachment compatibility with outlook email clients.
Deprecated
3.4.0 Use setAttachments()/getAttachments() instead.Parameters
- string|array|null
$attachments
optional null - String with the filename or array with filenames
Returns
array|Cake\Mailer\Email
$this Either the array of attachments when getting or $this when setting.
Throws
InvalidArgumentExceptionbcc()source public
bcc( string|array|null $email null , string|null $name null )
Bcc
Deprecated
3.4.0 Use setBcc()/getBcc() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
cc()source public
cc( string|array|null $email null , string|null $name null )
Cc
Deprecated
3.4.0 Use setCc()/getCc() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
charset()source public
charset( string|null $charset null )
Charset setter/getter
Deprecated
3.4.0 Use setCharset()/getCharset() instead.Parameters
- string|null
$charset
optional null - Character set.
Returns
stringCharset
configTransport()source public static
configTransport( string|array $key , array|Cake\Mailer\AbstractTransport|null $config null )
Add or read transport configuration.
Use this method to define transports to use in delivery profiles. Once defined you cannot edit the configurations, and must use Email::dropTransport() to flush the configuration first.
When using an array of configuration data a new transport will be constructed for each message sent. When using a Closure, the closure will be evaluated for each message.
The className
is used to define the class to use for a transport. It can either be a short name, or a fully qualified classname
Deprecated
3.4.0 Use setConfigTransport()/getConfigTransport() instead.Parameters
- string|array
$key
The configuration name to read/write. Or an array of multiple transports to set.
- array|
Cake\Mailer\AbstractTransport
|null$config
optional null Either an array of configuration data, or a transport instance.
Returns
array|nullEither null when setting or an array of data when reading.
Throws
BadMethodCallExceptionWhen modifying an existing configuration.
configuredTransport()source public static
configuredTransport( )
Returns an array containing the named transport configurations
Returns
arrayArray of configurations.
createFromArray()source public
createFromArray( array $config )
Configures an email instance object from serialized config.
Parameters
- array
$config
- Email configuration array.
Returns
$this Configured email instance.
deliver()source public static
deliver( string|array|null $to null , string|null $subject null , string|array|null $message null , string|array $transportConfig 'default' , boolean $send true )
Static method to fast create an instance of \Cake\Mailer\Email
Parameters
- string|array|null
$to
optional null - Address to send (see Cake\Mailer\Email::to()). If null, will try to use 'to' from transport config
- string|null
$subject
optional null - String of subject or null to use 'subject' from transport config
- string|array|null
$message
optional null - String with message or array with variables to be used in render
- string|array
$transportConfig
optional 'default' - String to use config from EmailConfig or array with configs
- boolean
$send
optional true - Send the email or just return the instance pre-configured
Returns
Cake\Mailer\Email
Instance of Cake\Mailer\Email
Throws
InvalidArgumentExceptiondomain()source public
domain( string|null $domain null )
Domain as top level (the part after @)
Deprecated
3.4.0 Use setDomain()/getDomain() instead.Parameters
- string|null
$domain
optional null - Manually set the domain for CLI mailing
Returns
string|Cake\Mailer\Email
$this
dropTransport()source public static
dropTransport( string $key )
Delete transport configuration.
Parameters
- string
$key
- The transport name to remove.
emailFormat()source public
emailFormat( string|null $format null )
Email format
Deprecated
3.4.0 Use setEmailFormat()/getEmailFormat() instead.Parameters
- string|null
$format
optional null - Formatting string.
Returns
string|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptionemailPattern()source public
emailPattern( string|boolean|null $regex false )
EmailPattern setter/getter
Deprecated
3.4.0 Use setEmailPattern()/getEmailPattern() instead.Parameters
- string|boolean|null
$regex
optional false The pattern to use for email address validation, null to unset the pattern and make use of filter_var() instead, false or nothing to return the current value
Returns
string|Cake\Mailer\Email
$this
from()source public
from( string|array|null $email null , string|null $name null )
From
Deprecated
3.4.0 Use setFrom()/getFrom() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptiongetAttachments()source public
getAttachments( )
Gets attachments to the email message.
Returns
arrayArray of attachments.
getConfigTransport()source public static
getConfigTransport( string $key )
Gets current transport configuration.
Parameters
- string
$key
- The configuration name to read.
Returns
array|nullTransport config.
getHeaders()source public
getHeaders( array $include [] )
Get list of headers
Includes:
from
replyTo
readReceipt
returnPath
to
cc
bcc
subject
Parameters
- array
$include
optional [] - List of headers.
Returns
arraygetOriginalSubject()source public
getOriginalSubject( )
Get original subject without encoding
Returns
stringOriginal subject
getProfile()source public
getProfile( )
Gets the configuration profile to use for this instance.
Returns
string|arraygetReadReceipt()source public
getReadReceipt( )
Gets Read Receipt (Disposition-Notification-To header).
Returns
arraygetTransport()source public
getTransport( )
Gets the transport.
Returns
Cake\Mailer\AbstractTransport
headerCharset()source public
headerCharset( string|null $charset null )
HeaderCharset setter/getter
Deprecated
3.4.0 Use setHeaderCharset()/getHeaderCharset() instead.Parameters
- string|null
$charset
optional null - Character set.
Returns
stringCharset
helpers()source public
helpers( array|null $helpers null )
Helpers to be used in render
Deprecated
3.4.0 Use setHelpers()/getHelpers() instead.Parameters
- array|null
$helpers
optional null - Helpers list.
Returns
array|Cake\Mailer\Email
$this
jsonSerialize()source public
jsonSerialize( )
Serializes the email object to a value that can be natively serialized and re-used to clone this email instance.
It has certain limitations for viewVars that are good to know:
- ORM\Query executed and stored as resultset
- SimpleXmlElements stored as associative array
- Exceptions stored as strings
- Resources, \Closure and \PDO are not supported.
Returns
arraySerializable array of configuration properties.
Throws
ExceptionWhen a view var object can not be properly serialized.
Implementation of
JsonSerializable::jsonSerialize()
message()source public
message( string|null $type null )
Get generated message (used by transport classes)
Parameters
- string|null
$type
optional null - Use MESSAGE_* constants or null to return the full message as array
Returns
string|arrayString if have type, array if type is null
messageId()source public
messageId( boolean|string|null $message null )
Message-ID
Deprecated
3.4.0 Use setMessageId()/getMessageId() instead.Parameters
- boolean|string|null
$message
optional null - True to generate a new Message-ID, False to ignore (not send in email), String to set as Message-ID
Returns
boolean|string|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptionprofile()source public
profile( null|string|array $config null )
Get/Set the configuration profile to use for this instance.
Deprecated
3.4.0 Use setProfile()/getProfile() instead.Parameters
- null|string|array
$config
optional null String with configuration name, or an array with config or null to return current config.
Returns
string|array|Cake\Mailer\Email
$this
readReceipt()source public
readReceipt( string|array|null $email null , string|null $name null )
Read Receipt (Disposition-Notification-To header)
Deprecated
3.4.0 Use setReadReceipt()/getReadReceipt() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptionreplyTo()source public
replyTo( string|array|null $email null , string|null $name null )
Reply-To
Deprecated
3.4.0 Use setReplyTo()/getReplyTo() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptionreset()source public
reset( )
Reset all the internal variables to be able to send out a new email.
Returns
$this
returnPath()source public
returnPath( string|array|null $email null , string|null $name null )
Return Path
Deprecated
3.4.0 Use setReturnPath()/getReturnPath() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptionsend()source public
send( string|array|null $content null )
Send an email using the specified content, template and layout
Parameters
- string|array|null
$content
optional null - String with message or array with messages
Returns
arrayThrows
BadMethodCallExceptionsender()source public
sender( string|array|null $email null , string|null $name null )
Sender
Deprecated
3.4.0 Use setSender()/getSender() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
Throws
InvalidArgumentExceptionserialize()source public
serialize( )
Serializes the Email object.
Returns
stringImplementation of
Serializable::serialize()
setAttachments()source public
setAttachments( string|array $attachments )
Add attachments to the email message
Attachments can be defined in a few forms depending on how much control you need:
Attach a single file:
$email->attachments('path/to/file');
Attach a file with a different filename:
$email->attachments(['custom_name.txt' => 'path/to/file.txt']);
Attach a file and specify additional properties:
$email->attachments(['custom_name.png' => [ 'file' => 'path/to/file', 'mimetype' => 'image/png', 'contentId' => 'abc123', 'contentDisposition' => false ] ]);
Attach a file from string and specify additional properties:
$email->attachments(['custom_name.png' => [ 'data' => file_get_contents('path/to/file'), 'mimetype' => 'image/png' ] ]);
The contentId
key allows you to specify an inline attachment. In your email text, you can use <img src="cid:abc123" />
to display the image inline.
The contentDisposition
key allows you to disable the Content-Disposition
header, this can improve attachment compatibility with outlook email clients.
Parameters
- string|array
$attachments
- String with the filename or array with filenames
Returns
$this
Throws
InvalidArgumentExceptionsetBcc()source public
setBcc( string|array $email , string|null $name null )
Sets "bcc" address.
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
setCc()source public
setCc( string|array $email , string|null $name null )
Sets "cc" address.
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
setCharset()source public
setCharset( string|null $charset )
Charset setter.
Parameters
- string|null
$charset
- Character set.
Returns
$this
setConfigTransport()source public static
setConfigTransport( string|array $key , array|Cake\Mailer\AbstractTransport|null $config null )
Sets transport configuration.
Use this method to define transports to use in delivery profiles. Once defined you cannot edit the configurations, and must use Email::dropTransport() to flush the configuration first.
When using an array of configuration data a new transport will be constructed for each message sent. When using a Closure, the closure will be evaluated for each message.
The className
is used to define the class to use for a transport. It can either be a short name, or a fully qualified class name
Parameters
- string|array
$key
The configuration name to write. Or an array of multiple transports to set.
- array|
Cake\Mailer\AbstractTransport
|null$config
optional null Either an array of configuration data, or a transport instance. Null when using key as array.
Throws
BadMethodCallExceptionWhen modifying an existing configuration.
setDomain()source public
setDomain( string $domain )
Sets domain.
Domain as top level (the part after @).
Parameters
- string
$domain
- Manually set the domain for CLI mailing.
Returns
$this
setEmailFormat()source public
setEmailFormat( string $format )
Sets email format.
Parameters
- string
$format
- Formatting string.
Returns
$this
Throws
InvalidArgumentExceptionsetEmailPattern()source public
setEmailPattern( string|null $regex )
EmailPattern setter/getter
Parameters
- string|null
$regex
The pattern to use for email address validation, null to unset the pattern and make use of filter_var() instead.
Returns
$this
setFrom()source public
setFrom( string|array $email , string|null $name null )
Sets "from" address.
Parameters
- string|array
$email
Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
Throws
InvalidArgumentExceptionsetHeaderCharset()source public
setHeaderCharset( string|null $charset )
HeaderCharset setter.
Parameters
- string|null
$charset
- Character set.
Returns
$this
setHeaders()source public
setHeaders( array $headers )
Sets headers for the message
Parameters
- array
$headers
- Associative array containing headers to be set.
Returns
$this
setHelpers()source public
setHelpers( array $helpers )
Sets helpers to be used when rendering.
Parameters
- array
$helpers
- Helpers list.
Returns
$this
setLayout()source public
setLayout( string|null $layout )
Sets layout.
Parameters
- string|null
$layout
- Layout name or null to not use
Returns
$this
setMessageId()source public
setMessageId( boolean|string $message )
Sets message ID.
Parameters
- boolean|string
$message
- True to generate a new Message-ID, False to ignore (not send in email), String to set as Message-ID.
Returns
$this
Throws
InvalidArgumentExceptionsetPriority()source public
setPriority( integer|null $priority )
Sets priority.
Parameters
- integer|null
$priority
- 1 (highest) to 5 (lowest)
Returns
$this
setProfile()source public
setProfile( string|array $config )
Sets the configuration profile to use for this instance.
Parameters
- string|array
$config
String with configuration name, or an array with config.
Returns
$this
setReadReceipt()source public
setReadReceipt( string|array $email , string|null $name null )
Sets Read Receipt (Disposition-Notification-To header).
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
Throws
InvalidArgumentExceptionsetReplyTo()source public
setReplyTo( string|array $email , string|null $name null )
Sets "Reply-To" address.
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
Throws
InvalidArgumentExceptionsetReturnPath()source public
setReturnPath( string|array $email , string|null $name null )
Return Path
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
Throws
InvalidArgumentExceptionsetSender()source public
setSender( string|array $email , string|null $name null )
Sets "sender" address.
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
Throws
InvalidArgumentExceptionsetSubject()source public
setSubject( string $subject )
Sets subject.
Parameters
- string
$subject
- Subject string.
Returns
$this
setTemplate()source public
setTemplate( string|null $template )
Sets template.
Parameters
- string|null
$template
- Template name or null to not use.
Returns
$this
setTheme()source public
setTheme( string $theme )
Sets theme to use when rendering.
Parameters
- string
$theme
- Theme name.
Returns
$this
setTo()source public
setTo( string|array $email , string|null $name null )
Sets "to" address.
Parameters
- string|array
$email
String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
$this
setTransport()source public
setTransport( string|Cake\Mailer\AbstractTransport $name )
Sets the transport.
When setting the transport you can either use the name of a configured transport or supply a constructed transport.
Parameters
- string|
Cake\Mailer\AbstractTransport
$name
Either the name of a configured transport, or a transport instance.
Returns
$this
Throws
LogicExceptionWhen the chosen transport lacks a send method.
InvalidArgumentException
When $name is neither a string nor an object.
setViewRenderer()source public
setViewRenderer( string $viewClass )
Sets view class for render.
Parameters
- string
$viewClass
- View class name.
Returns
$this
setViewVars()source public
setViewVars( array $viewVars )
Sets variables to be set on render.
Parameters
- array
$viewVars
- Variables to set for view.
Returns
$this
subject()source public
subject( string|null $subject null )
Get/Set Subject.
Deprecated
3.4.0 Use setSubject()/getSubject() instead.Parameters
- string|null
$subject
optional null - Subject string.
Returns
string|Cake\Mailer\Email
$this
template()source public
template( boolean|string $template false , boolean|string $layout false )
Template and layout
Deprecated
3.4.0 Use setTemplate()/getTemplate() and setLayout()/getLayout() instead.Parameters
- boolean|string
$template
optional false - Template name or null to not use
- boolean|string
$layout
optional false - Layout name or null to not use
Returns
array|Cake\Mailer\Email
$this
theme()source public
theme( string|null $theme null )
Theme to use when rendering
Deprecated
3.4.0 Use setTheme()/getTheme() instead.Parameters
- string|null
$theme
optional null - Theme name.
Returns
string|Cake\Mailer\Email
$this
to()source public
to( string|array|null $email null , string|null $name null )
To
Deprecated
3.4.0 Use setTo()/getTo() instead.Parameters
- string|array|null
$email
optional null Null to get, String with email, Array with email as key, name as value or email as value (without name)
- string|null
$name
optional null - Name
Returns
array|Cake\Mailer\Email
$this
transport()source public
transport( string|Cake\Mailer\AbstractTransport|null $name null )
Get/set the transport.
When setting the transport you can either use the name of a configured transport or supply a constructed transport.
Deprecated
3.4.0 Use setTransport()/getTransport() instead.Parameters
- string|
Cake\Mailer\AbstractTransport
|null$name
optional null Either the name of a configured transport, or a transport instance.
Returns
Cake\Mailer\AbstractTransport
|Cake\Mailer\Email
$this
Throws
LogicExceptionWhen the chosen transport lacks a send method.
InvalidArgumentException
When $name is neither a string nor an object.
unserialize()source public
unserialize( string $data )
Unserializes the Email object.
Parameters
- string
$data
- Serialized string.
Returns
Cake\Mailer\Email
Configured email instance.
Implementation of
Serializable::unserialize()
viewRender()source public
viewRender( string|null $viewClass null )
View class for render
Deprecated
3.4.0 Use setViewRenderer()/getViewRenderer() instead.Parameters
- string|null
$viewClass
optional null - View class name.
Returns
string|Cake\Mailer\Email
$this
viewVars()source public
viewVars( array|null $viewVars null )
Variables to be set on render
Deprecated
3.4.0 Use setViewVars()/getViewVars() instead.Parameters
- array|null
$viewVars
optional null - Variables to set for view.
Returns
array|Cake\Mailer\Email
$this
Methods used from Cake\Core\StaticConfigTrait
config()source public static
config( string|array $key , array|null $config null )
This method can be used to define configuration adapters for an application or read existing configuration.
To change an adapter's configuration at runtime, first drop the adapter and then reconfigure it.
Adapters will not be constructed until the first operation is done.
Usage
Assuming that the class' name is Cache
the following scenarios are supported:
Reading config data back:
Cache::config('default');
Setting a cache engine up.
Cache::config('default', $settings);
Injecting a constructed adapter in:
Cache::config('default', $instance);
Configure multiple adapters at once:
Cache::config($arrayOfConfig);
Deprecated
3.4.0 Use setConfig()/getConfig() instead.Parameters
- string|array
$key
- The name of the configuration, or an array of multiple configs.
- array|null
$config
optional null - An array of name => configuration data for adapter.
Returns
array|nullNull when adding configuration or an array of configuration data when reading.
Throws
BadMethodCallExceptionWhen trying to modify an existing config.
configured()source public static
configured( )
Returns an array containing the named configurations
Returns
arrayArray of configurations.
drop()source public static
drop( string $config )
Drops a constructed adapter.
If you wish to modify an existing configuration, you should drop it, change configuration and then re-add it.
If the implementing objects supports a $_registry
object the named configuration will also be unloaded from the registry.
Parameters
- string
$config
- An existing configuration you wish to remove.
Returns
booleanSuccess of the removal, returns false when the config does not exist.
dsnClassMap()source public static
dsnClassMap( array $map null )
Returns or updates the DSN class map for this class.
Deprecated
3.4.0 Use setDsnClassMap()/getDsnClassMap() instead.Parameters
- array
$map
optional null - Additions/edits to the class map to apply.
Returns
arraygetConfig()source public static
getConfig( string $key )
Reads existing configuration.
Parameters
- string
$key
- The name of the configuration.
Returns
array|nullArray of configuration data.
getDsnClassMap()source public static
getDsnClassMap( )
Returns the DSN class map for this class.
Returns
arrayparseDsn()source public static
parseDsn( string $dsn )
Parses a DSN into a valid connection configuration
This method allows setting a DSN using formatting similar to that used by PEAR::DB. The following is an example of its usage:
$dsn = 'mysql://user:pass@localhost/database?'; $config = ConnectionManager::parseDsn($dsn); $dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=LOGS'; $config = Log::parseDsn($dsn); $dsn = 'smtp://user:secret@localhost:25?timeout=30&client=null&tls=null'; $config = Email::parseDsn($dsn); $dsn = 'file:///?className=\My\Cache\Engine\FileEngine'; $config = Cache::parseDsn($dsn); $dsn = 'File://?prefix=myapp_cake_core_&serialize=true&duration=+2 minutes&path=/tmp/persistent/'; $config = Cache::parseDsn($dsn);
For all classes, the value of scheme
is set as the value of both the className
unless they have been otherwise specified.
Note that querystring arguments are also parsed and set as values in the returned configuration.
Parameters
- string
$dsn
- The DSN string to convert to a configuration array
Returns
arrayThe configuration array to be stored after parsing the DSN
Throws
InvalidArgumentExceptionIf not passed a string, or passed an invalid string
setConfig()source public static
setConfig( string|array $key , array $config null )
This method can be used to define configuration adapters for an application.
To change an adapter's configuration at runtime, first drop the adapter and then reconfigure it.
Adapters will not be constructed until the first operation is done.
Usage
Assuming that the class' name is Cache
the following scenarios are supported:
Setting a cache engine up.
Cache::setConfig('default', $settings);
Injecting a constructed adapter in:
Cache::setConfig('default', $instance);
Configure multiple adapters at once:
Cache::setConfig($arrayOfConfig);
Parameters
- string|array
$key
- The name of the configuration, or an array of multiple configs.
- array
$config
optional null - An array of name => configuration data for adapter.
Throws
BadMethodCallExceptionWhen trying to modify an existing config.
LogicException
When trying to store an invalid structured config array.
setDsnClassMap()source public static
setDsnClassMap( array $map )
Updates the DSN class map for this class.
Parameters
- array
$map
- Additions/edits to the class map to apply.
Methods used from Cake\View\ViewVarsTrait
createView()source public
createView( string|null $viewClass null )
Constructs the view class instance based on the current configuration.
Parameters
- string|null
$viewClass
optional null - Optional namespaced class name of the View class to instantiate.
Returns
Cake\View\View
Throws
Cake\View\Exception\MissingViewException
If view class was not found.
set()source public
set( string|array $name , mixed $value null )
Saves a variable or an associative array of variables for use inside a template.
Parameters
- string|array
$name
- A string or an array of data.
- mixed
$value
optional null Value in case $name is a string (which then works as the key). Unused if $name is an associative array, otherwise serves as the values to $name's keys.
Returns
$this
viewBuilder()source public
viewBuilder( )
Get the view builder being used.
Returns
Cake\View\ViewBuilder
viewOptions()source public
viewOptions( string|array|null $options null , boolean $merge true )
Get/Set valid view options in the object's _validViewOptions property. The property is created as an empty array if it is not set. If called without any parameters it will return the current list of valid view options. See createView()
.
Parameters
- string|array|null
$options
optional null - string or array of string to be appended to _validViewOptions.
- boolean
$merge
optional true Whether to merge with or override existing valid View options. Defaults to
true
.
Returns
arrayThe updated view options as an array.
Properties detail
$_appCharsetsource
protected string|null
The application wide charset, used to encode headers and body
$_attachmentssource
protected array
List of files that should be attached to the email.
Only absolute paths
[]
$_bccsource
protected array
Blind Carbon Copy
List of email's that should receive a copy of the email. The Recipient WILL NOT be able to see this list
[]
$_ccsource
protected array
Carbon Copy
List of email's that should receive a copy of the email. The Recipient WILL be able to see this list
[]
$_contentTypeCharsetsource
protected array
Define Content-Type charset name
[ 'ISO-2022-JP-MS' => 'ISO-2022-JP' ]
$_domainsource
protected string
Domain for messageId generation. Needs to be manually set for CLI mailing as env('HTTP_HOST') is empty
$_dsnClassMapsource
protected static array
An array mapping url schemes to fully qualified Transport class names
[ 'debug' => 'Cake\Mailer\Transport\DebugTransport', 'mail' => 'Cake\Mailer\Transport\MailTransport', 'smtp' => 'Cake\Mailer\Transport\SmtpTransport', ]
$_emailPatternsource
protected string
Regex for email validation
If null, filter_var() will be used. Use the emailPattern() method to set a custom pattern.'
self::EMAIL_PATTERN
$_headerssource
protected array
Associative array of a user defined headers Keys will be prefixed 'X-' as per RFC2822 Section 4.7.5
[]
$_profilesource
protected array
A copy of the configuration profile for this instance. This copy can be modified with Email::profile().
[]
$_returnPathsource
protected array
The mail that will be used in case of any errors like - Remote mailserver down - Remote user has exceeded his quota - Unknown user
[]
$_transportsource
protected Cake\Mailer\AbstractTransport
|null
The transport instance to use for sending mail.
$headerCharsetsource
public string|null
Charset the email header is sent in If null, the $charset property will be used as default
© 2005–2017 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.4/class-Cake.Mailer.Email.html