aldoanizio/carteiro

此包的最新版本(dev-master)没有提供许可证信息。

Mako 框架 4.2 轻量级 SMTP 邮件类

dev-master 2015-10-26 12:09 UTC

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)

限制

与原始类一样,此软件包也有一些限制。请随时为此项目做出贡献。

  • 不支持加密。
  • 不支持优先级。
  • 不保留连接以进行邮箱发送的队列。