类 Mailer
Mailer 基类。
Mailer 类使您能够将相关的电子邮件逻辑封装到可重用且可测试的类中。
定义消息
Mailer 使您能够轻松定义处理电子邮件格式化逻辑的方法。例如
class UserMailer extends Mailer
{
public function resetPassword($user)
{
$this
->setSubject('Reset Password')
->setTo($user->email)
->set(['token' => $user->token]);
}
}
这是一个简单的例子,但展示了如何声明一个 mailer。
发送消息
定义一些消息后,您可能想要发送它们
$mailer = new UserMailer();
$mailer->send('resetPassword', $user);
事件监听器
Mailer 还可以订阅应用程序事件,使您能够将电子邮件传递与应用程序代码分离。通过重新声明 implementedEvents()
方法,您可以定义事件处理程序,将事件转换为电子邮件。例如,如果您的应用程序有一个用户注册事件
public function implementedEvents(): array
{
return [
'Model.afterSave' => 'onRegistration',
];
}
public function onRegistration(EventInterface $event, EntityInterface $entity, ArrayObject $options)
{
if ($entity->isNew()) {
$this->send('welcome', [$entity]);
}
}
onRegistration 方法将应用程序事件转换为 mailer 方法。我们的 mailer 可以注册在应用程序引导程序中,也可以在 Table 类的 initialize() 钩子中注册。
属性摘要
-
$_config protected static
array<string|int, array<string, mixed>>
配置集。
-
$_dsnClassMap protected static
array<string, string>
Mailer 驱动程序类映射。
-
$_tableLocator protected
Cake\ORM\Locator\LocatorInterface|null
表定位器实例
-
$clonedInstances protected
array<string, mixed>
保存消息、渲染器和传输实例,以便在运行 mailer 操作后恢复。
-
$defaultTable protected
string|null
此对象的默认表别名。
-
$logConfig protected
array|null
-
$message protected
Cake\Mailer\Message
消息实例。
-
$messageClass protected
string
消息类名。
-
$name public static
string
Mailer 的名称。
-
$renderer protected
Cake\Mailer\Renderer|null
电子邮件渲染器
-
$transport protected
Cake\Mailer\AbstractTransport|null
用于发送邮件的传输实例。
方法摘要
-
__call() public
魔术方法,将方法类转发到 Message 实例。
-
__construct() public
构造函数
-
addAttachments() public @method
添加附件。{@see \Cake\Mailer\Message::addAttachments()}
-
addBcc() public @method
添加“密件抄送”地址。{@see \Cake\Mailer\Message::addBcc()}
-
addCc() public @method
添加“抄送”地址。{@see \Cake\Mailer\Message::addCc()}
-
addHeaders() public @method
为消息添加标头。{@see \Cake\Mailer\Message::addHeaders()}
-
addReplyTo() public @method
添加“回复”地址。{@see \Cake\Mailer\Message::addReplyTo()}
-
addTo() public @method
添加“收件人”地址。{@see \Cake\Mailer\Message::addTo()}
-
configured() public static
返回包含命名配置的数组
-
deliver() public
渲染内容并使用配置的传输发送电子邮件。
-
drop() public static
删除已构建的适配器。
-
fetchTable() public
获取表实例的便捷方法。
-
flatten() protected
将给定值转换为字符串
-
getAttachments() public @method
获取电子邮件消息的附件。{@see \Cake\Mailer\Message::getAttachments()}
-
getBcc() public @method
获取“密件抄送”地址。{@see \Cake\Mailer\Message::getBcc()}
-
getBody() public @method
以数组形式获取生成的邮件正文。{@see \Cake\Mailer\Message::getBody()}
-
getCc() public @method
获取“抄送”地址。{@see \Cake\Mailer\Message::getCc()}
-
getCharset() public @method
字符集获取器。{@see \Cake\Mailer\Message::getCharset()}
-
getConfig() public static
读取现有配置。
-
getConfigOrFail() public static
读取特定键的现有配置。
-
getDomain() public @method
获取域名。{@see \Cake\Mailer\Message::getDomain()}
-
getDsnClassMap() public static
返回此类的 DSN 类映射。
-
getEmailFormat() public @method
获取电子邮件格式。{@see \Cake\Mailer\Message::getEmailFormat()}
-
getFrom() public @method
获取“发件人”地址。{@see \Cake\Mailer\Message::getFrom()}
-
getHeaderCharset() public @method
HeaderCharset 获取器。{@see \Cake\Mailer\Message::getHeaderCharset()}
-
getHeaders() public @method
获取标头列表。{@see \Cake\Mailer\Message::getHeaders()}
-
getMessage() public
获取消息实例。
-
getMessageId() public @method
获取消息 ID。{@see \Cake\Mailer\Message::getMessageId()}
-
getReadReceipt() public @method
获取回执(Disposition-Notification-To 标头)。{@see \Cake\Mailer\Message::getReadReceipt()}
-
getRenderer() public
获取电子邮件渲染器。
-
getReplyTo() public @method
获取“回复”地址。{@see \Cake\Mailer\Message::getReplyTo()}
-
getReturnPath() public @method
获取返回路径。{@see \Cake\Mailer\Message::getReturnPath()}
-
getSender() public @method
获取“发件人”地址。{@see \Cake\Mailer\Message::getSender()}
-
getSubject() public @method
获取主题。{@see \Cake\Mailer\Message::getSubject()}
-
getTableLocator() public
获取表定位器。
-
getTo() public @method
获取“收件人”地址。{@see \Cake\Mailer\Message::getTo()}
-
getTransport() public
获取传输。
-
implementedEvents() public
已实现的事件。
-
logDelivery() protected
记录电子邮件消息传递。
-
parseDsn() public static
将 DSN 解析为有效的连接配置
-
render() public
渲染内容并设置消息正文。
-
reset() public
将所有内部变量重置,以便能够发送新电子邮件。
-
restore() protected
将消息、渲染器、传输实例还原到运行操作之前的状态。
-
send() public
发送电子邮件。
-
setAttachments() public @method
向电子邮件消息添加附件。{@see \Cake\Mailer\Message::setAttachments()}
-
setBcc() public @method
设置“密件抄送”地址。{@see \Cake\Mailer\Message::setBcc()}
-
setCc() public @method
设置“抄送”地址。{@see \Cake\Mailer\Message::setCc()}
-
setCharset() public @method
字符集设置器。{@see \Cake\Mailer\Message::setCharset()}
-
setConfig() public static
此方法可用于为应用程序定义配置适配器。
-
setDomain() public @method
设置域名。{@see \Cake\Mailer\Message::setDomain()}
-
setDsnClassMap() public static
更新此类的 DSN 类映射。
-
setEmailFormat() public @method
设置电子邮件格式。{@see \Cake\Mailer\Message::getHeaders()}
-
setFrom() public @method
设置“发件人”地址。{@see \Cake\Mailer\Message::setFrom()}
-
setHeaderCharset() public @method
HeaderCharset 设置器。{@see \Cake\Mailer\Message::setHeaderCharset()}
-
setHeaders() public @method
设置消息的头部。{@see \Cake\Mailer\Message::setHeaders()}
-
setLogConfig() protected
设置日志配置。
-
setMessage() public deprecated
设置消息实例。
-
setMessageId() public @method
设置消息 ID。{@see \Cake\Mailer\Message::setMessageId()}
-
setProfile() public
设置此实例要使用的配置配置文件。
-
setReadReceipt() public @method
设置回执 (Disposition-Notification-To 标头)。{@see \Cake\Mailer\Message::setReadReceipt()}
-
setRenderer() public
设置电子邮件渲染器。
-
setReplyTo() public @method
设置 "Reply-To" 地址。{@see \Cake\Mailer\Message::setReplyTo()}
-
setReturnPath() public @method
设置回退路径。{@see \Cake\Mailer\Message::setReturnPath()}
-
setSender() public @method
设置 "sender" 地址。{@see \Cake\Mailer\Message::setSender()}
-
setSubject() public @method
设置主题。{@see \Cake\Mailer\Message::setSubject()}
-
setTableLocator() public
设置表格定位器。
-
setTo() public @method
设置 "to" 地址。{@see \Cake\Mailer\Message::setTo()}
-
setTransport() public
设置传输方式。
-
setViewVars() public
设置电子邮件视图变量。
-
viewBuilder() public
获取视图构建器。
方法详情
__call() ¶ public
__call(string $method, array $args): $this|mixed
魔术方法,将方法类转发到 Message 实例。
参数
-
string
$method 方法名。
-
array
$args 方法参数
返回值
$this|mixed
__construct() ¶ public
__construct(array<string, mixed>|string|null $config = null)
构造函数
参数
-
array<string, mixed>|string|null
$config optional 配置数组,或从 app.php 加载配置的字符串
addAttachments() ¶ public @method
addAttachments(mixed $attachments): $this
添加附件。{@see \Cake\Mailer\Message::addAttachments()}
参数
-
$attachments
返回值
$this
addBcc() ¶ public @method
addBcc(mixed $email, mixed $name = null): $this
添加“密件抄送”地址。{@see \Cake\Mailer\Message::addBcc()}
参数
-
$email
-
$name optional
返回值
$this
addCc() ¶ public @method
addCc(mixed $email, mixed $name = null): $this
添加“抄送”地址。{@see \Cake\Mailer\Message::addCc()}
参数
-
$email
-
$name optional
返回值
$this
addHeaders() ¶ public @method
addHeaders(array $headers): $this
为消息添加标头。{@see \Cake\Mailer\Message::addHeaders()}
参数
-
array
$headers
返回值
$this
addReplyTo() ¶ public @method
addReplyTo(mixed $email, mixed $name = null): $this
添加“回复”地址。{@see \Cake\Mailer\Message::addReplyTo()}
参数
-
$email
-
$name optional
返回值
$this
addTo() ¶ public @method
addTo(mixed $email, mixed $name = null): $this
添加“收件人”地址。{@see \Cake\Mailer\Message::addTo()}
参数
-
$email
-
$name optional
返回值
$this
deliver() ¶ public
deliver(string $content = ''): array
渲染内容并使用配置的传输发送电子邮件。
参数
-
string
$content optional 内容。
返回值
array
drop() ¶ public static
drop(string $config): bool
删除已构建的适配器。
如果您希望修改现有配置,您应该将其删除,更改配置,然后重新添加。
如果实现的对象支持 $_registry
对象,那么命名配置也将从注册表中卸载。
参数
-
string
$config 您希望删除的现有配置。
返回值
bool
fetchTable() ¶ public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
获取表实例的便捷方法。
参数
-
string|null
$alias optional 您要获取的别名。应采用驼峰式命名。如果为
null
,则使用$defaultTable
属性的值。-
array<string, mixed>
$options optional 您要使用它构建表格的选项。如果表格已加载,则注册表选项将被忽略。
返回值
Cake\ORM\Table
抛出
Cake\Core\Exception\CakeException
如果
$alias
参数和 $defaultTable
属性都为 null
。另请参阅
flatten() ¶ protected
flatten(list<string>|string $value): string
将给定值转换为字符串
参数
-
list<string>|string
$value 要转换的值
返回值
string
getAttachments() ¶ public @method
getAttachments(): array
获取电子邮件消息的附件。{@see \Cake\Mailer\Message::getAttachments()}
返回值
array
getBcc() ¶ public @method
getBcc(): array
获取“密件抄送”地址。{@see \Cake\Mailer\Message::getBcc()}
返回值
array
getBody() ¶ public @method
getBody(?string $type = null): array|string
以数组形式获取生成的邮件正文。{@see \Cake\Mailer\Message::getBody()}
参数
-
?string
$type optional
返回值
array|string
getCharset() ¶ public @method
getCharset(): string
字符集获取器。{@see \Cake\Mailer\Message::getCharset()}
返回值
string
getConfig() ¶ public static
getConfig(string $key): mixed|null
读取现有配置。
参数
-
string
$key 配置的名称。
返回值
mixed|null
getConfigOrFail() ¶ public static
getConfigOrFail(string $key): mixed
读取特定键的现有配置。
此键的配置值必须存在,绝不能为 null。
参数
-
string
$key 配置的名称。
返回值
mixed
抛出
InvalidArgumentException
如果值不存在。
getDomain() ¶ public @method
getDomain(): string
获取域名。{@see \Cake\Mailer\Message::getDomain()}
返回值
string
getDsnClassMap() ¶ public static
getDsnClassMap(): array<string, class-string>
返回此类的 DSN 类映射。
返回值
array<string, class-string>
getEmailFormat() ¶ public @method
getEmailFormat(): string
获取电子邮件格式。{@see \Cake\Mailer\Message::getEmailFormat()}
返回值
string
getFrom() ¶ public @method
getFrom(): array
获取“发件人”地址。{@see \Cake\Mailer\Message::getFrom()}
返回值
array
getHeaderCharset() ¶ public @method
getHeaderCharset(): string
HeaderCharset 获取器。{@see \Cake\Mailer\Message::getHeaderCharset()}
返回值
string
getHeaders() ¶ public @method
getHeaders(array $include = []): $this
获取标头列表。{@see \Cake\Mailer\Message::getHeaders()}
参数
-
array
$include optional
返回值
$this
getMessageId() ¶ public @method
getMessageId(): string|bool
获取消息 ID。{@see \Cake\Mailer\Message::getMessageId()}
返回值
string|bool
getReadReceipt() ¶ public @method
getReadReceipt(): array
获取回执(Disposition-Notification-To 标头)。{@see \Cake\Mailer\Message::getReadReceipt()}
返回值
array
getReplyTo() ¶ public @method
getReplyTo(): array
获取“回复”地址。{@see \Cake\Mailer\Message::getReplyTo()}
返回值
array
getReturnPath() ¶ public @method
getReturnPath(): array
获取返回路径。{@see \Cake\Mailer\Message::getReturnPath()}
返回值
array
getSender() ¶ public @method
getSender(): array
获取“发件人”地址。{@see \Cake\Mailer\Message::getSender()}
返回值
array
getSubject() ¶ public @method
getSubject(): string
获取主题。{@see \Cake\Mailer\Message::getSubject()}
返回值
string
getTableLocator() ¶ public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
获取表定位器。
返回值
Cake\ORM\Locator\LocatorInterface
getTransport() ¶ public
getTransport(): Cake\Mailer\AbstractTransport
获取传输。
返回值
Cake\Mailer\AbstractTransport
implementedEvents() ¶ public
implementedEvents(): array<string, mixed>
已实现的事件。
示例
public function implementedEvents()
{
return [
'Order.complete' => 'sendEmail',
'Article.afterBuy' => 'decrementInventory',
'User.onRegister' => ['callable' => 'logRegistration', 'priority' => 20, 'passParams' => true]
];
}
返回值
array<string, mixed>
logDelivery() ¶ protected
logDelivery(array $contents): void
记录电子邮件消息传递。
参数
-
array
$contents 带有 'headers' 和 'message' 键的内容。
返回值
void
parseDsn() ¶ public static
parseDsn(string $dsn): array<string, mixed>
将 DSN 解析为有效的连接配置
此方法允许使用类似于 PEAR::DB 使用的格式设置 DSN。以下是一个使用示例。
$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_translations_&serialize=true&duration=+2 minutes&path=/tmp/persistent/';
$config = Cache::parseDsn($dsn);
对于所有类,scheme
的值都设置为 className
的值,除非它们被另行指定。
请注意,查询字符串参数也会被解析并作为返回的配置中的值设置。
参数
-
string
$dsn 要转换为配置数组的 DSN 字符串
返回值
array<string, mixed>
抛出
InvalidArgumentException
如果没有传递字符串,或者传递了无效字符串
render() ¶ public
render(string $content = ''): $this
渲染内容并设置消息正文。
参数
-
string
$content optional 内容。
返回值
$this
send() ¶ public
send(string|null $action = null, array $args = [], array $headers = []): array
发送电子邮件。
参数
-
string|null
$action 可选 要触发的邮件程序操作的名称。如果没有指定操作,则所有其他方法参数将被忽略。
-
array
$args 可选 要传递给触发的邮件程序操作的参数。
-
array
$headers 可选 要设置的标头。
返回值
array
抛出
Cake\Mailer\Exception\MissingActionException
BadMethodCallException
setAttachments() ¶ public @method
setAttachments(mixed $attachments): $this
向电子邮件消息添加附件。{@see \Cake\Mailer\Message::setAttachments()}
参数
-
$attachments
返回值
$this
setBcc() ¶ public @method
setBcc(mixed $email, mixed $name = null): $this
设置“密件抄送”地址。{@see \Cake\Mailer\Message::setBcc()}
参数
-
$email
-
$name optional
返回值
$this
setCc() ¶ public @method
setCc(mixed $email, mixed $name = null): $this
设置“抄送”地址。{@see \Cake\Mailer\Message::setCc()}
参数
-
$email
-
$name optional
返回值
$this
setCharset() ¶ public @method
setCharset(mixed $charset): $this
字符集设置器。{@see \Cake\Mailer\Message::setCharset()}
参数
-
$charset
返回值
$this
setConfig() ¶ public static
setConfig(array<string, mixed>|string $key, mixed $config = null): void
此方法可用于为应用程序定义配置适配器。
要更改适配器的运行时配置,首先丢弃适配器,然后重新配置它。
适配器直到第一个操作完成才会被构建。
用法
假设类的名称是 Cache
,则支持以下场景
设置缓存引擎。
Cache::setConfig('default', $settings);
注入构建的适配器
Cache::setConfig('default', $instance);
一次配置多个适配器
Cache::setConfig($arrayOfConfig);
参数
-
array<string, mixed>|string
$key 配置的名称,或多个配置的数组。
-
mixed
$config 可选 配置值。通常是适配器的名称 => 配置数据的数组。
返回值
void
抛出
BadMethodCallException
尝试修改现有配置时。
LogicException
尝试存储结构无效的配置数组时。
setDomain() ¶ public @method
setDomain(mixed $domain): $this
设置域名。{@see \Cake\Mailer\Message::setDomain()}
参数
-
$domain
返回值
$this
setDsnClassMap() ¶ public static
setDsnClassMap(array<string, string> $map): void
更新此类的 DSN 类映射。
参数
-
array<string, string>
$map 要应用的类映射的添加/编辑。
返回值
void
setEmailFormat() ¶ public @method
setEmailFormat(mixed $format): $this
设置电子邮件格式。{@see \Cake\Mailer\Message::getHeaders()}
参数
-
$format
返回值
$this
setFrom() ¶ public @method
setFrom(mixed $email, mixed $name = null): $this
设置“发件人”地址。{@see \Cake\Mailer\Message::setFrom()}
参数
-
$email
-
$name optional
返回值
$this
setHeaderCharset() ¶ public @method
setHeaderCharset(mixed $charset): $this
HeaderCharset 设置器。{@see \Cake\Mailer\Message::setHeaderCharset()}
参数
-
$charset
返回值
$this
setHeaders() ¶ public @method
setHeaders(array $headers): $this
设置消息的头部。{@see \Cake\Mailer\Message::setHeaders()}
参数
-
array
$headers
返回值
$this
setLogConfig() ¶ protected
setLogConfig(array<string, mixed>|string|true $log): void
设置日志配置。
参数
-
array<string, mixed>|string|true
$log 日志配置。
返回值
void
setMessage() ¶ public
setMessage(Cake\Mailer\Message $message): $this
设置消息实例。
参数
-
Cake\Mailer\Message
$message 消息实例。
返回值
$this
setMessageId() ¶ public @method
setMessageId(mixed $message): $this
设置消息 ID。{@see \Cake\Mailer\Message::setMessageId()}
参数
-
$message
返回值
$this
setProfile() ¶ public
setProfile(array<string, mixed>|string $config): $this
设置此实例要使用的配置配置文件。
参数
-
array<string, mixed>|string
$config 带有配置名称的字符串,或带有配置的数组。
返回值
$this
setReadReceipt() ¶ public @method
setReadReceipt(mixed $email, mixed $name = null): $this
设置回执 (Disposition-Notification-To 标头)。{@see \Cake\Mailer\Message::setReadReceipt()}
参数
-
$email
-
$name optional
返回值
$this
setRenderer() ¶ public
setRenderer(Cake\Mailer\Renderer $renderer): $this
设置电子邮件渲染器。
参数
-
Cake\Mailer\Renderer
$renderer 渲染实例。
返回值
$this
setReplyTo() ¶ public @method
setReplyTo(mixed $email, mixed $name = null): $this
设置 "Reply-To" 地址。{@see \Cake\Mailer\Message::setReplyTo()}
参数
-
$email
-
$name optional
返回值
$this
setReturnPath() ¶ public @method
setReturnPath(mixed $email, mixed $name = null): $this
设置回退路径。{@see \Cake\Mailer\Message::setReturnPath()}
参数
-
$email
-
$name optional
返回值
$this
setSender() ¶ public @method
setSender(mixed $email, mixed $name = null): $this
设置 "sender" 地址。{@see \Cake\Mailer\Message::setSender()}
参数
-
$email
-
$name optional
返回值
$this
setSubject() ¶ public @method
setSubject(mixed $subject): $this
设置主题。{@see \Cake\Mailer\Message::setSubject()}
参数
-
$subject
返回值
$this
setTableLocator() ¶ public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
设置表格定位器。
参数
-
Cake\ORM\Locator\LocatorInterface
$tableLocator LocatorInterface 实例。
返回值
$this
setTo() ¶ public @method
setTo(mixed $email, mixed $name = null): $this
设置 "to" 地址。{@see \Cake\Mailer\Message::setTo()}
参数
-
$email
-
$name optional
返回值
$this
setTransport() ¶ public
setTransport(Cake\Mailer\AbstractTransport|string $name): $this
设置传输方式。
设置传输时,您可以使用已配置传输的名称或提供已构建的传输。
参数
-
Cake\Mailer\AbstractTransport|string
$name 已配置传输的名称或传输实例。
返回值
$this
抛出
LogicException
当选定的传输缺少 send 方法时。
setViewVars() ¶ public
setViewVars(array|string $key, mixed $value = null): $this
设置电子邮件视图变量。
参数
-
array|string
$key 视图变量的名称或哈希。
-
mixed
$value 可选 视图变量值。
返回值
$this