bedeabza/bdz-html-email

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

使用 ZF2 布局发送 HTML 邮件的 Zend Framework 2 模块

dev-master 2012-09-15 10:08 UTC

This package is not auto-updated.

Last update: 2024-09-22 04:26:03 UTC


README

本模块的主要目的是提供一个简单的方式,使用 ZF2 视图作为模板发送 HTML 邮件,同时保持能够直接与 zendframework/mail 包中的对象交互的许多优点。该模块处理模板的 HTML 渲染,并提供检索 \Zend\Mail\Message\Zend\Mail\Transport 实例的可能性,以便进一步操作它们。

安装

Composer

将以下内容添加到您的 composer.json 文件中

"require": {
    "bedeabza/bdz-html-email": "dev-master"
}

然后运行 php composer.phar install

手动安装

为了开始使用该模块,请在您的 vendor 目录中克隆 repo,或者如果您已经在项目中使用 git,则将其添加为子模块

git clone git@github.com:bedeabza/BdzHtmlEmail.git vendor/BdzHtmlEmail
or
git submodule add git@github.com:bedeabza/BdzHtmlEmail.git vendor/BdzHtmlEmail

该模块也将很快以 Composer 包的形式提供。

最后需要做的是将其添加到应用程序的激活模块列表中。为此,在您的 config/application.config.php 文件的 modules 数组中添加 BdzHtmlEmail 键。

配置

该模块配置完全基于 ZF2 的新 DIC。默认配置使用 Sendmail 作为默认传输,但您可以在应用程序配置中覆盖此设置。还有一个名为 module.config.php.smtp-sample 的文件,它展示了如何进行 SMTP 配置,但不要修改 vendor 目录中的配置,使用您自己的应用程序或其他模块的配置来覆盖默认设置。

此外,整个配置都是基于别名的,因此如果您想扩展它,可以替换模块使用的任何类。

首先需要做的是将您自己的视图目录添加到配置中,因此您的 module/Application/config/module.config.php 可能包含以下内容

return array(
    'di' => array(
        'instance' => array(
            'bdz-email' => array(
                'parameters' => array(
                    'viewsDir'  => array(
                        dirname(__DIR__) . '/view/email'
                    )
                )
            )
        )
    )
);

模板查找使用堆栈,因此您可以使用多个模块的模板,只需保持文件名不同即可。

此外,电子邮件的默认模板是模块中提供的 example.phtml,您可以使用 template 键在参数中覆盖它,或者在运行时通过在电子邮件对象上调用 setTemplate() 来覆盖它。

使用方法

有两种方法可以获得电子邮件对象:使用工厂,或自行配置。(以下示例发生在控制器中)

工厂

$email = $this->getServiceLocator()->get('bdz-email-factory')->create(array(
    'from' => array('email@domain', 'John Doe'),
    'subject' => 'Email subject',
    'template' => 'default'
));

手动安装

$email = $this->getServiceLocator()->get('di')->newInstance('bdz-email');
$email->setFrom('email@domain', 'John Doe');
$email->setSubject('Email subject');
$email->setTemplate('default');

所有上述参数都可以通过 DI 配置注入,因此如何使用它取决于您。

电子邮件对象还提供了一种检索或替换 \Zend\Mail\Message\Zend\Mail\Transport\TransportInterface 对象的方法

$message = $email->getMessage();
$transport = $email->getTransport();

电子邮件类实现了 proxy 模式,因此调用不存在于 \BdzHtmlEmail\Email 中的任何方法都将代理到底层的消息对象。

发送电子邮件也可以以两种方式完成

// 1
$email->send(array('firstTemplateParam' => 'value'), 'email@domain', 'Receiver Name');

// 2
$email->setTo('email@domain', 'Receiver Name');
$email->send(array('firstTemplateParam' => 'value'));

在上面的两种用例中,名称参数不是必需的。此外,如果您的模板不需要任何变量,您只需调用 send()

联系方式

您可以通过 bedeabza at gmail dot com 联系我或向 repo 发送拉取请求。