bedeabza / bdz-html-email
使用 ZF2 布局发送 HTML 邮件的 Zend Framework 2 模块
Requires
- php: >=5.3.3
- zendframework/zendframework: >=2.0.0
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 发送拉取请求。