aldoanizio / carteiro
Mako 框架 4.2 轻量级 SMTP 邮件类
This package is auto-updated.
Last update: 2024-08-29 04:30:56 UTC
README
这是一个为 Mako 框架 >=4.2 设计的轻量级 SMTP 邮件包。
安装
使用 composer 安装。只需将包添加到您的项目中。
composer require aldoanizio/carteiro:*
现在您可以通过单个命令更新您的项目。
composer update
注册服务
安装后,您需要在您的 app/config/application.php
文件中注册该包。
/** * --------------------------------------------------------- * Packages * --------------------------------------------------------- * * Packages to boot during the application boot sequence. * They will be booted in the order that they are defined. */ 'packages' => [ .... 'aldoanizio\carteiro\CarteiroPackage', ],
配置
配置您的包有两种方式。第一种是在包文件夹中直接编辑配置文件:app/packages/carteiro/config/config.php
并输入必要的信息。
如果您喜欢,可以将包的配置文件 app/packages/carteiro/config/config.php
复制到 app/config/packages/carteiro
文件夹中,应用程序将加载该文件而不是包中的文件。这使得在保留自定义设置的同时更新包成为可能。
基本用法
要发送电子邮件,只需使用 create
方法解析一些数据。
$this->carteiro->create('my.email.view', $data, function($mail) { $mail->subject('Hello World'); $mail->to('foo@bar.com', 'John Doe'); });
传递给 create
方法的第一个参数是要用作电子邮件正文的视图名称。如果作为字符串传递,将设置邮件正文使用 html
格式。
第二个是传递给视图的 $data
。
第三个是一个闭包,允许您在电子邮件消息中指定各种选项。也可以使用闭包访问其他变量。
消息格式
您还可以指定一个纯文本视图,与 html
视图一起使用。为此,您需要使用数组定义在每种格式中要使用哪个视图。
$this->carteiro->create(['text' => 'my.text.view', 'html' => 'my.html.view'], $data, function($mail) use ($newUser) { $mail->subject('Welcome New User'); $mail->to($newUser->email, $newUser->name); }
或者只需使用 text
键以纯文本形式发送电子邮件。
$this->carteiro->create(['text' => 'my.text.view'], $data, function($mail) use ($newUser) { $mail->subject('Welcome New User'); $mail->to($newUser->email, $newUser->name); }
原始内容数据
有时您需要使用不依赖于视图文件的内容发送电子邮件。例如,如果您想向存储在数据库中的客户发送自定义消息。
为此,您可以使用 raw
键解析自定义内容。注意在这种情况下,您不需要使用视图数据,因此将空数组传递给第二个参数。
// Your form post data $postData = $this->request->post(); // ORM $customer = Custommer::get($postData['customer_id']); // Send message $this->carteiro->create(['raw' => $postData['message']], [], function($mail) use ($postData, $customer) { $mail->subject($postData['subject']); $mail->to($customer->email, $customer->name); });
邮件选项
您还可以在电子邮件消息中指定其他选项,例如任何抄送或附件。
设置电子邮件主题
$mail->subject('Welcome User');
设置电子邮件 "From" 和 "Reply-To" 地址/名称
而不是使用配置文件中存储的信息,您可以使用数组或字符串来设置 'from' 和 'reply-to' 地址/名称。
$address = ['webmaster@domain.tld', 'System Webmaster']; // From $mail->from($address); // or $mail->from('webmaster@domain.tld', 'System Webmaster'); // Reply To $mail->reply($address); // or $mail->reply('webmaster@domain.tld', 'System Webmaster');
设置电子邮件接收者地址/名称。
您可以定义多个收件人(名称是可选的)。
// Add to $mail->to('receiver1@domain.tld'); $mail->to('receiver2@domain.tld');
您可以使用数组添加多个。
// Build list $list = []; $list[] = 'receiver1@domain.tld'; $list[] = 'receiver2@domain.tld'; // List with names $list = []; $list[] = ['receiver1@domain.tld', 'Receiver 1']; $list[] = ['receiver1@domain.tld', 'Receiver 2']; // Add to $mail->to($list);
添加抄送地址/名称
cc
选项与 to
选项类似,即使使用多个收件人。
$mail->cc('carboncopy1@domain.tld', 'Copy Receiver 1'); // or $mail->cc($list);
添加密送地址/名称
bcc
选项与 to
选项类似,即使使用多个收件人。
$mail->bcc('blindcarboncopy1@domain.tld', 'Blind Copy Receiver 1'); // or $mail->bcc($list);
将文件附加到电子邮件
您可以添加附件。
$mail->attach('/path/to/file1.png'); $mail->attach('/path/to/file2.png');
调试模式
在配置文件中,您可以标记 'debug_mode' = true;
,这在测试您的 SMTP 连接时可能很有用。它将记录每个步骤中电子邮件发送过程中的服务器响应。
或者,在某些情况下,您还可以启用/禁用调试模式,而无需编辑配置文件。
$mail->debug(true); $mail->debug(false);
更改调试文件路径
默认情况下,该软件包使用默认的mako调试文件,但您也可以定义另一个调试文件位置。使用'debugFilePath()'
方法来更改文件位置。
当您调用此方法时,您不需要使用$mail->debug(true)
来启用调试。
$mail->debugFilePath('my/new/file/path');
更改服务器参数
在配置文件中,您可以定义多个connections
,每个连接都有其自己的设置。默认连接设置是在'default' => 'primary'
标志中定义的。
有时您可能想更改要使用的连接。您可以在运行时完成此操作。
$mail->useConn('my_other_connection');
此外,您还可以定义配置文件中未包含的服务器参数。
$mail->setConn('server_host_addr', 'server_conn_port', (null|'ssl'|'tls'), (true|false), 'my_auth_user_name', 'my_auth_password');
更改localhost域名
您可能想更改HELO / EHLO请求的源。
将默认值设置为"localhost"可能导致电子邮件被认为为垃圾邮件。
$mail->setLocalhost('my.host.domain.name');
致谢
此软件包是在swt83的Laravel SMTP类的基础上构建的 - (https://github.com/swt83/php-laravel-smtp)
限制
与原始类一样,此软件包也有一些限制。请随时为此项目做出贡献。
- 不支持加密。
- 不支持优先级。
- 不保留连接以进行邮箱发送的队列。