nikolaposa/np-mailer

此包已被废弃,不再维护。未建议替代包。

ZF2 模块,简化了电子邮件消息的发送

1.0.4 2015-09-04 10:40 UTC

This package is auto-updated.

Last update: 2019-08-06 11:11:54 UTC


README

Build Status

NP_Mailer 是一个 ZF2 模块,简化并改进了电子邮件消息的发送。它提供了一组丰富的选项,用于执行邮件常规操作。

警告:此包不再维护

安装

首选的安装方法是使用 Composer。运行以下命令以安装最新版本的包并将其添加到项目的 composer.json

composer require nikolaposa/np-mailer

在您的 application.config.php 中启用模块

<?php
return array(
    'modules' => array(
        // ...
        'NP_Mailer',
    ),
    // ...
);

功能

  • 发送 HTML 电子邮件
  • 从 ViewModel 实例构建电子邮件
  • 电子邮件布局
  • 邮件配置

用法

邮件服务

NP_Mailer\Mailer 服务是该模块的核心,消费者在发送电子邮件消息时应与之交互。它以 NP_Mailer 服务名称提供。

配置

可以配置邮件服务以调整其功能。NP_Mailer\MailerFactory 是一个默认工厂,负责创建邮件实例,它了解邮件配置键,可以通过该键提供所有邮件选项。这些包括

  • transport - Zend\Mail\Transport\TransportInterface 实例;默认使用 Sendmail 传输。
  • defaults - 默认邮件消息参数(例如主题、收件人、发件人等)
  • params_filters - 应使用的一组参数过滤器。HtmlBodyBuilderTranslator 是默认使用的。
  • configs - 邮件配置

参数过滤器

邮件服务有一个子组件——参数过滤器实现,它为预处理和调整某些邮件参数提供强大机制。

默认过滤器

NP_Mailer 默认提供一些常见用例的过滤器。

HtmlBodyBuilder (NP_Mailer\ParamsFilter\HtmlBodyBuilder)

此过滤器确保 HTML 正文按正确的方式组装。它还能够在以 ViewModel 的形式提供时渲染 HTML 正文。

HtmlBodyBuilder 了解一些特定于此过滤器的自定义邮件参数。这些是

  • bodyHtml - 如果提供,则用作邮件消息的 HTML 正文
  • bodyText - 如果与 bodyHtml 一起提供,这两个将构成多部分消息正文
  • viewModel - 当提供时,消息的HTML正文将通过渲染此视图模型来形成
  • viewTemplate - 与 viewModel 参数类似,但应该是模板的名称,其渲染的内容应用作消息正文

与视图特定参数(viewModelviewTemplate)相关,此过滤器提供了在分别与实际的 viewModelviewTemplate 输出一起渲染某些布局模板的能力。这可以通过设置 HtmlBodyBuilder 的 layoutTemplate 选项来实现,该选项应该是用作邮件布局的模板的名称。

翻译器(NP_Mailer\ParamsFilter\Translator

能够翻译某些电子邮件消息字段的过滤器。可翻译的字段通过其 $translatableParams 属性和相应的设置方法进行配置。

邮件配置

邮件服务提供具有“准备发送”邮件配置的能力,这些配置预先配置了邮件消息参数(例如主题、收件人、发件人等),因此只有在提供某些配置的名称时才能触发邮件发送。

这些可以直接通过邮件服务的API(addConfig(s) 方法)或通过配置 - configs 选项来提供。此类配置的示例可能如下所示

<?php
return array(
    // ...
    'mailer' => array(
        // ...
        'configs' => array(
            'foo' => array(
                'subject' => 'Foobar',
                'from' => 'foo@bar.com',
            ),
            'test' => array(
                'to' => 'test123@example.com',
                'from' => 'test@example.com',
            )
        )
        // ...
    ),
    // ...
);

在此示例中,指定了两个邮件配置,一个命名为 foo,另一个命名为 test

用法

发送基本邮件

$mailer->send(array(
   'to' => 'test@example.com',
   'subject' => 'Test',
   'body' => 'Hello world!',
));

发送HTML电子邮件

$mailer->send(array(
   'to' => 'test@example.com',
   'subject' => 'Test',
   'bodyHtml' => '<html><body><p>Hello world!</p></body></html>',
));

从ViewModel发送HTML邮件

$viewModel = new \Zend\View\Model\ViewModel(array(
    'foo' => 'bar',
    'baz' => 'bat',
));
$viewModel->setTemplate('template/name');

$mailer->send(array(
   'to' => 'test@example.com',
   'subject' => 'Test',
   'viewModel' => $viewModel,
));

发送配置的邮件

$mailer->send(array(
   'bodyHtml' => '<html><body><p>Hello world!</p></body></html>',
), 'someMailiingConfigurationName');