类 SmtpTransport
使用 SMTP 协议发送邮件
常量
属性概览
-
$_config protected
array<string, mixed>
运行时配置
-
$_configInitialized protected
bool
配置属性是否已使用默认值进行配置
-
$_content protected
array<string, string>
要返回的电子邮件内容
-
$_defaultConfig protected
array<string, mixed>
此类的默认配置
-
$_lastResponse protected
array
最后发送的 SMTP 命令的响应。
-
$_socket protected
Cake\Network\Socket
到 SMTP 服务器的套接字
-
$authType protected
string|null
身份验证类型。
方法概览
-
__construct() public
构造函数
-
__destruct() public
析构函数
-
__wakeup() public
反序列化处理程序。
-
_auth() protected
发送身份验证
-
_authLogin() protected
使用 AUTH LOGIN 机制进行身份验证。
-
_authPlain() protected
使用 AUTH PLAIN 机制进行身份验证。
-
_authXoauth2() protected
使用 AUTH XOAUTH2 机制进行身份验证。
-
_bufferResponseLines() protected
解析并将响应行存储在
'code' => 'message'
格式中。 -
_configDelete() protected
删除单个配置键。
-
_configRead() protected
读取配置键。
-
_configWrite() protected
写入配置键。
-
_connect() protected
连接到 SMTP 服务器
-
_disconnect() protected
断开连接
-
_generateSocket() protected
用于生成套接字的辅助方法
-
_parseAuthType() protected
解析最后一条响应行并提取首选身份验证类型。
-
_prepareFromAddress() protected
准备
from
电子邮件地址。 -
_prepareFromCmd() protected
准备
MAIL FROM
SMTP 命令。 -
_prepareMessage() protected
准备消息主体。
-
_prepareRcptCmd() protected
准备
RCPT TO
SMTP 命令。 -
_prepareRecipientAddresses() protected
准备收件人电子邮件地址。
-
_sendData() protected
发送数据
-
_sendRcpt() protected
发送电子邮件
-
_smtpSend() protected
用于将数据发送到 SMTP 连接的受保护方法
-
checkRecipient() protected
检查是否至少设置了一个目标标头。
-
configShallow() public
将提供的配置与现有配置合并。与
config()
对嵌套键执行递归合并不同,此方法执行简单合并。 -
connect() public
连接到 SMTP 服务器。
-
connected() public
检查到 SMTP 服务器的开放连接是否可用。
-
disconnect() public
与 SMTP 服务器断开连接。
-
getConfig() public
返回配置。
-
getConfigOrFail() public
返回此特定键的配置。
-
getLastResponse() public
返回最后发送的 SMTP 命令的响应。
-
send() public
发送邮件
-
setConfig() public
设置配置。
方法详情
__construct() ¶ public
__construct(array<string, mixed> $config = [])
构造函数
参数
-
array<string, mixed>
$config optional 配置选项。
_authLogin() ¶ protected
_authLogin(string $username, string $password): void
使用 AUTH LOGIN 机制进行身份验证。
参数
-
string
$username 用户名。
-
string
$password 密码。
返回
void
_authPlain() ¶ protected
_authPlain(string $username, string $password): string|null
使用 AUTH PLAIN 机制进行身份验证。
参数
-
string
$username 用户名。
-
string
$password 密码。
返回
string|null
_authXoauth2() ¶ protected
_authXoauth2(string $username, string $token): void
使用 AUTH XOAUTH2 机制进行身份验证。
参数
-
string
$username 用户名。
-
string
$token 令牌。
返回
void
另请参阅
https://developers.google.com/gmail/imap/xoauth2-protocol#smtp_protocol_exchange
_bufferResponseLines() ¶ protected
_bufferResponseLines(list<string> $responseLines): void
解析并将响应行存储在 'code' => 'message'
格式中。
参数
-
list<string>
$responseLines 要解析的响应行。
返回
void
_configDelete() ¶ protected
_configDelete(string $key): void
删除单个配置键。
参数
-
string
$key 要删除的键。
返回
void
抛出
Cake\Core\Exception\CakeException
如果尝试覆盖现有配置
_configRead() ¶ protected
_configRead(string|null $key): mixed
读取配置键。
参数
-
string|null
$key 要读取的键。
返回
mixed
_configWrite() ¶ protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
写入配置键。
参数
-
array<string, mixed>|string
$key 要写入的键。
-
mixed
$value 要写入的值。
-
string|bool
$merge 可选 如果为 true,则递归合并;如果为 'shallow',则简单合并;如果为 false,则覆盖,默认为 false。
返回
void
抛出
Cake\Core\Exception\CakeException
如果尝试覆盖现有配置
_generateSocket() ¶ 受保护
_generateSocket(): void
用于生成套接字的辅助方法
返回
void
抛出
Cake\Network\Exception\SocketException
_prepareFromAddress() ¶ 受保护
_prepareFromAddress(Cake\Mailer\Message $message): array
准备 from
电子邮件地址。
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
array
_prepareFromCmd() ¶ 受保护
_prepareFromCmd(string $message): string
准备 MAIL FROM
SMTP 命令。
参数
-
string
$message 用于命令的发送电子邮件地址。
返回
string
_prepareMessage() ¶ 受保护
_prepareMessage(Cake\Mailer\Message $message): string
准备消息主体。
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
string
_prepareRcptCmd() ¶ 受保护
_prepareRcptCmd(string $message): string
准备 RCPT TO
SMTP 命令。
参数
-
string
$message 用于命令的发送电子邮件地址。
返回
string
_prepareRecipientAddresses() ¶ 受保护
_prepareRecipientAddresses(Cake\Mailer\Message $message): array
准备收件人电子邮件地址。
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
array
_sendData() ¶ 受保护
_sendData(Cake\Mailer\Message $message): void
发送数据
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
void
抛出
Cake\Network\Exception\SocketException
_sendRcpt() ¶ 受保护
_sendRcpt(Cake\Mailer\Message $message): void
发送电子邮件
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
void
抛出
Cake\Network\Exception\SocketException
_smtpSend() ¶ 受保护
_smtpSend(string|null $data, string|false $checkCode = '250'): string|null
用于将数据发送到 SMTP 连接的受保护方法
参数
-
string|null
$data 要发送到 SMTP 服务器的数据。
-
string|false
$checkCode 可选 要在服务器响应中检查的代码,如果为 false,则跳过。
返回
string|null
抛出
Cake\Network\Exception\SocketException
checkRecipient() ¶ 受保护
checkRecipient(Cake\Mailer\Message $message): void
检查是否至少设置了一个目标标头。
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
void
抛出
Cake\Core\Exception\CakeException
如果 to、cc 或 bcc 中至少有一个未指定。
configShallow() ¶ 公共
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
将提供的配置与现有配置合并。与 config()
对嵌套键执行递归合并不同,此方法执行简单合并。
设置特定值。
$this->configShallow('key', $value);
设置嵌套值。
$this->configShallow('some.nested.key', $value);
同时更新多个配置设置。
$this->configShallow(['one' => 'value', 'another' => 'value']);
参数
-
array<string, mixed>|string
$key 要设置的键,或完整的配置数组。
-
mixed|null
$value 可选 要设置的值。
返回
$this
getConfig() ¶ 公共
getConfig(string|null $key = null, mixed $default = null): mixed
返回配置。
用法
读取整个配置。
$this->getConfig();
读取特定值。
$this->getConfig('key');
读取嵌套值。
$this->getConfig('some.nested.key');
使用默认值读取。
$this->getConfig('some-key', 'default-value');
参数
-
string|null
$key 可选 要获取的键,或获取整个配置的 null。
-
mixed
$default 可选 键不存在时的返回值。
返回
mixed
getConfigOrFail() ¶ 公共
getConfigOrFail(string $key): mixed
返回此特定键的配置。
此键的配置值必须存在,不能为 null。
参数
-
string
$key 要获取的键。
返回
mixed
抛出
InvalidArgumentException
getLastResponse() ¶ 公共
getLastResponse(): array
返回最后发送的 SMTP 命令的响应。
响应包含一个或多个包含响应代码和可选响应消息文本的行。
[
[
'code' => '250',
'message' => 'mail.example.com'
],
[
'code' => '250',
'message' => 'PIPELINING'
],
[
'code' => '250',
'message' => '8BITMIME'
],
// etc...
]
返回
array
send() ¶ 公共
send(Cake\Mailer\Message $message): array{headers: string, message: string}
发送邮件
参数
-
Cake\Mailer\Message
$message 消息实例。
返回
array{headers: string, message: string}
抛出
Cake\Network\Exception\SocketException
setConfig() ¶ 公共
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
设置配置。
用法
设置特定值。
$this->setConfig('key', $value);
设置嵌套值。
$this->setConfig('some.nested.key', $value);
同时更新多个配置设置。
$this->setConfig(['one' => 'value', 'another' => 'value']);
参数
-
array<string, mixed>|string
$key 要设置的键,或完整的配置数组。
-
mixed|null
$value 可选 要设置的值。
-
bool
$merge 可选 是否递归合并或覆盖现有配置,默认为 true。
返回
$this
抛出
Cake\Core\Exception\CakeException
当尝试设置无效键时。