krs/mail-bundle

Symfony2 邮件Bundle。

安装: 50

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 8

分支: 0

公开问题: 0

类型:symfony-bundle

dev-master 2014-01-17 16:50 UTC

This package is not auto-updated.

Last update: 2024-09-24 05:26:19 UTC


README

symfony2 KRSMailBundle 提供了一种轻松管理应用程序电子邮件模板的方法。

功能包括

  • 管理电子邮件模板
  • 生成 Sonata Admin

开始使用 KRSMailBundle

symfony2 KRSMailBundle 提供了一种轻松管理应用程序电子邮件模板的方法。邮件模板

当使用 symfony 发送邮件时,通常在文件模板中编写邮件正文。邮件主题也经常在操作中硬编码,以及 "from" 和 "to" 邮件。问题是开发者负责编写和维护所有这些值。每次客户想要更改邮件正文时,他都必须依赖开发者。

目标是让非开发者通过将所有邮件属性从代码移到数据库来管理发送的邮件。

安装

步骤 1:使用 composer 下载 KRSMailBundle

在 composer.json 中添加 KRSMailBundle

{
    "require": {
       "krs/mail-bundle": "dev-master"
    }
}

现在运行以下命令告诉 composer 下载包

$ php composer.phar update krs/mail-bundle

Composer 将将包安装到项目的 vendor/krs 目录。

步骤 2:启用包

public function registerBundles()
{
    $bundles = array(
        // ...
        new KRS\MailBundle\KRSMailBundle(),
    );
}

使用邮件模板发送邮件

邮件通常从 symfony 动作发送。假设当(s)他签署请愿书时,您想向注册用户发送邮件。

$this->get('krs.mailer')                 // get a KRSMail instance  
->setTemplate('karis_mail_confirmation') // choose a KRSMailTemplate  
->addValues(array(                          // add values to populate the template  
  'user_name'       => $user->username,  
  'user_email'      => $user->email,  
  'petition_name'   => $petition->name  
))  
->send();   

第一次运行此代码时,"karis_mail_confirmation" 邮件模板不存在,会自动创建。

配置模板

现在您需要通过 Admin->Tools->邮件模板进行修改。邮件模板有以下字段

名称

模板的唯一名称,用于在 PHP 代码中标识它。例如,"sign_petition_confirmation"

###描述

简短描述,以帮助您记住此邮件模板的用途。例如,"祝贺刚刚签署请愿书的用户"

激活

是否发送使用此模板的电子邮件。

主题

单行邮件主题。例如,"你好,亲爱的 %user_name%"

正文

邮件正文。例如,"感谢您签署请愿书 %petition_name%!"

发件人邮箱

邮件的 "from" 标头。例如。

webmaster@mysite.com 您可以使用多个电子邮件地址,包括静态和变量,并提供姓名和电子邮件。

other-mail@domain.com, %user_email%, Sergio <sergio@mysite.com>

收件人邮箱

将收到邮件的电子邮件或电子邮件列表。例如。

%user_email%

变量

当您使用管理员界面配置邮件模板时,您会看到可以在模板字段中使用的可用变量。在当前示例中,您可以使用变量:%user_name%、%user_email%、%petition_name%。您不需要手动管理此可用变量列表。如果需要,当您使用值数组渲染邮件时,它们会自动更新。

->addValues(array(                        // add values to populate the template  
  'user_name'       => $user->username,  
  'user_email'      => $user->email,  
  'petition_name'   => $petition->name  
))  

传递值的更多方法

在上一个示例中,我们使用简单的 PHP 数组将值传递到模板中

->addValues(array(                        // add values to populate the template  
  'user_name'       => $user->username,  
  'user_email'      => $user->email,  
  'petition_name'   => $petition->name  
))  

/*  
 * Values available in the template:  
 * %user_name%, %user_email%, %petition_name%  
 */  

您还可以使用 Doctrine 记录或 Doctrine 表单。在这种情况下,表列用作键,对象值用作值。

->addValues($user) // $user is an instance of the DmUser model, which extends DoctrineRecord
/*  
 * Values available in the template:  
 * %username%, %email%, %is_active%, ...  
 */  
You can call the addValues() method several times, and pass it a prefix as a second argument:

->addValues($user, 'user_')
->addValues($petition, 'petition_')  
->addValues(array(  
  'petition_url' => $this->getHelper()->link($petition)->getAbsoluteHref()  
))  

/*  
 * Values available in the template:  
 * %user_username%, %user_email%, %user_is_active%, %petition_name%, %petition_text%, %petition_url%  
 */ 

Bitdeli Badge