W3cubDocs

/CakePHP 4.4

Class SmtpTransport

Send mail using SMTP protocol

Constants

  • AUTH_LOGIN
    'LOGIN'
  • AUTH_PLAIN
    'PLAIN'

Property Summary

  • $_config protected
    array<string, mixed>

    Runtime config

  • bool

    Whether the config property has already been configured with defaults

  • $_content protected
    array<string, string>

    Content of email to return

  • $_defaultConfig protected
    array<string, mixed>

    Default config for this class

  • $_lastResponse protected
    array

    The response of the last sent SMTP command.

  • $_socket protected
    Cake\Network\Socket|null

    Socket to SMTP server

  • $authType protected
    string|null

    Detected authentication type.

Method Summary

Method Detail

__construct() public

__construct(array<string, mixed> $config = [])

Constructor

Parameters

array<string, mixed> $config optional

Configuration options.

__destruct() public

__destruct()

Destructor

Tries to disconnect to ensure that the connection is being terminated properly before the socket gets closed.

__wakeup() public

__wakeup(): void

Unserialize handler.

Ensure that the socket property isn't reinitialized in a broken state.

Returns

void

_auth() protected

_auth(): void

Send authentication

Returns

void

Throws

Cake\Network\Exception\SocketException

_authLogin() protected

_authLogin(string $username, string $password): void

Authenticate using AUTH LOGIN mechanism.

Parameters

string $username

Username.

string $password

Password.

Returns

void

_authPlain() protected

_authPlain(string $username, string $password): string|null

Authenticate using AUTH PLAIN mechanism.

Parameters

string $username

Username.

string $password

Password.

Returns

string|null

_bufferResponseLines() protected

_bufferResponseLines(array<string> $responseLines): void

Parses and stores the response lines in 'code' => 'message' format.

Parameters

array<string> $responseLines

Response lines to parse.

Returns

void

_configDelete() protected

_configDelete(string $key): void

Deletes a single config key.

Parameters

string $key

Key to delete.

Returns

void

Throws

Cake\Core\Exception\CakeException
if attempting to clobber existing config

_configRead() protected

_configRead(string|null $key): mixed

Reads a config key.

Parameters

string|null $key

Key to read.

Returns

mixed

_configWrite() protected

_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void

Writes a config key.

Parameters

array<string, mixed>|string $key

Key to write to.

mixed $value

Value to write.

string|bool $merge optional

True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.

Returns

void

Throws

Cake\Core\Exception\CakeException
if attempting to clobber existing config

_connect() protected

_connect(): void

Connect to SMTP Server

Returns

void

Throws

Cake\Network\Exception\SocketException

_disconnect() protected

_disconnect(): void

Disconnect

Returns

void

Throws

Cake\Network\Exception\SocketException

_generateSocket() protected

_generateSocket(): void

Helper method to generate socket

Returns

void

Throws

Cake\Network\Exception\SocketException

_parseAuthType() protected

_parseAuthType(): void

Parses the last response line and extract the preferred authentication type.

Returns

void

_prepareFromAddress() protected

_prepareFromAddress(Cake\Mailer\Message $message): array

Prepares the from email address.

Parameters

Cake\Mailer\Message $message

Message instance

Returns

array

_prepareFromCmd() protected

_prepareFromCmd(string $message): string

Prepares the MAIL FROM SMTP command.

Parameters

string $message

The email address to send with the command.

Returns

string

_prepareMessage() protected

_prepareMessage(Cake\Mailer\Message $message): string

Prepares the message body.

Parameters

Cake\Mailer\Message $message

Message instance

Returns

string

_prepareRcptCmd() protected

_prepareRcptCmd(string $message): string

Prepares the RCPT TO SMTP command.

Parameters

string $message

The email address to send with the command.

Returns

string

_prepareRecipientAddresses() protected

_prepareRecipientAddresses(Cake\Mailer\Message $message): array

Prepares the recipient email addresses.

Parameters

Cake\Mailer\Message $message

Message instance

Returns

array

_sendData() protected

_sendData(Cake\Mailer\Message $message): void

Send Data

Parameters

Cake\Mailer\Message $message

Message instance

Returns

void

Throws

Cake\Network\Exception\SocketException

_sendRcpt() protected

_sendRcpt(Cake\Mailer\Message $message): void

Send emails

Parameters

Cake\Mailer\Message $message

Message instance

Returns

void

Throws

Cake\Network\Exception\SocketException

_smtpSend() protected

_smtpSend(string|null $data, string|false $checkCode = '250'): string|null

Protected method for sending data to SMTP connection

Parameters

string|null $data

Data to be sent to SMTP server

string|false $checkCode optional

Code to check for in server response, false to skip

Returns

string|null

Throws

Cake\Network\Exception\SocketException

_socket() protected

_socket(): Cake\Network\Socket

Get socket instance.

Returns

Cake\Network\Socket

Throws

RuntimeException
If socket is not set.

checkRecipient() protected

checkRecipient(Cake\Mailer\Message $message): void

Check that at least one destination header is set.

Parameters

Cake\Mailer\Message $message

Message instance.

Returns

void

Throws

Cake\Core\Exception\CakeException
If at least one of to, cc or bcc is not specified.

configShallow() public

configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this

Merge provided config with existing config. Unlike config() which does a recursive merge for nested keys, this method does a simple merge.

Setting a specific value:

$this->configShallow('key', $value);

Setting a nested value:

$this->configShallow('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->configShallow(['one' => 'value', 'another' => 'value']);

Parameters

array<string, mixed>|string $key

The key to set, or a complete array of configs.

mixed|null $value optional

The value to set.

Returns

$this

connect() public

connect(): void

Connect to the SMTP server.

This method tries to connect only in case there is no open connection available already.

Returns

void

connected() public

connected(): bool

Check whether an open connection to the SMTP server is available.

Returns

bool

disconnect() public

disconnect(): void

Disconnect from the SMTP server.

This method tries to disconnect only in case there is an open connection available.

Returns

void

getConfig() public

getConfig(string|null $key = null, mixed $default = null): mixed

Returns the config.

Usage

Reading the whole config:

$this->getConfig();

Reading a specific value:

$this->getConfig('key');

Reading a nested value:

$this->getConfig('some.nested.key');

Reading with default value:

$this->getConfig('some-key', 'default-value');

Parameters

string|null $key optional

The key to get or null for the whole config.

mixed $default optional

The return value when the key does not exist.

Returns

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Returns the config for this specific key.

The config value for this key must exist, it can never be null.

Parameters

string $key

The key to get.

Returns

mixed

Throws

InvalidArgumentException

getLastResponse() public

getLastResponse(): array

Returns the response of the last sent SMTP command.

A response consists of one or more lines containing a response code and an optional response message text:

[
    [
        'code' => '250',
        'message' => 'mail.example.com'
    ],
    [
        'code' => '250',
        'message' => 'PIPELINING'
    ],
    [
        'code' => '250',
        'message' => '8BITMIME'
    ],
    // etc...
]

Returns

array

send() public

send(Cake\Mailer\Message $message): array{headers: string, message: string}

Send mail

Parameters

Cake\Mailer\Message $message

Message instance

Returns

array{headers: string, message: string}

Throws

Cake\Network\Exception\SocketException

setConfig() public

setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this

Sets the config.

Usage

Setting a specific value:

$this->setConfig('key', $value);

Setting a nested value:

$this->setConfig('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->setConfig(['one' => 'value', 'another' => 'value']);

Parameters

array<string, mixed>|string $key

The key to set, or a complete array of configs.

mixed|null $value optional

The value to set.

bool $merge optional

Whether to recursively merge or overwrite existing config, defaults to true.

Returns

$this

Throws

Cake\Core\Exception\CakeException
When trying to set a key that is invalid.

Property Detail

$_config protected

Runtime config

Type

array<string, mixed>

$_configInitialized protected

Whether the config property has already been configured with defaults

Type

bool

$_content protected

Content of email to return

Type

array<string, string>

$_defaultConfig protected

Default config for this class

Type

array<string, mixed>

$_lastResponse protected

The response of the last sent SMTP command.

Type

array

$_socket protected

Socket to SMTP server

Type

Cake\Network\Socket|null

$authType protected

Detected authentication type.

Type

string|null

© 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/4.4/class-Cake.Mailer.Transport.SmtpTransport.html