wowo/wowo-newsletter-bundle

此包的最新版本(v1.2.8)没有可用的许可证信息。

Symfony2 的新闻简报包(支持 beanstalkd 消息队列)

v1.2.8 2013-06-18 11:29 UTC

README

Build Status

WowoNewsletterBundle 提供了一种简单的方式来发送大量丰富的 HTML 电子邮件。它使用 beanstalkd 队列代理来处理在发送之前要发送的邮件。包非常易于扩展 - 您可以提供自己的联系人来源或使用包含在包中的默认来源。

包含的功能

  • 发送 HTML 电子邮件(包含嵌入式丰富内容)
  • 可自定义的联系人来源
  • 高性能(beanstalkd 每秒可以提供数千次操作)
  • 可定制的消息 - 您可以定义尽可能多的占位符
  • 可扩展性 - 您可以将 beanstalkd 队列和发送邮件的工作进程放置在您的应用程序主 Web 服务器之外

此包依赖于 WowoQueueBundle,它是 beanstalkd 消息系统的抽象层

安装

步骤 1:下载 WowoNewsletterBundle

composer 机制

将以下行添加到您的 composer.json 文件中的 "require" 定义中

"wowo/wowo-newsletter-bundle": "dev-master"

现在,运行 composer 脚本来下载包

$ php composer.phar install

deps 机制

将以下行添加到您的 deps 文件中

    [WowoNewsletterBundle]
        git=git://github.com/wowo/WowoNewsletterBundle.git
        target=bundles/Wowo/NewsletterBundle

    [WowoQueueBundle]
        git=git://github.com/wowo/WowoQueueBundle.git
        target=bundles/Wowo/QueueBundle

检查其他依赖项及其设置,并在 https://github.com/wowo/WowoQueueBundle 上运行 vendors 脚本来下载包

$ php bin/vendors install

步骤 2:配置自动加载器(如果您使用 composer,请跳过此步骤)

Wowo 命名空间添加到您的自动加载器中

<?php
// app/autoload.php

$loader->registerNamespaces(array(
    // ...
        'Wowo' => __DIR__.'/../vendor/bundles',
        ));

步骤 3:启用包

最后,在内核中启用包

<?php
// app/AppKernel.php

public function registerBundles()
{
        $bundles = array(
            // ...
            new Wowo\NewsletterBundle\WowoNewsletterBundle(),
        );
}

步骤 4:运行 newsletter:send 工作进程

要完成邮件发送,您需要运行工作进程

$ php app/console newsletter:send

有可选的 --verbose 开关,它可以用作简单的 stdout 监视器

TinyMCE 集成

此包已准备好与 TinyMCE 一起使用。只需开启此包并添加一些配置(以下是一个示例)即可将正文字段转换为富文本编辑器。

stfalcon_tinymce:
    include_jquery: true
    theme:
        advanced:
            mode: "textareas"
            theme: "advanced"
            theme_advanced_buttons1: "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,separator,bullist,numlist,link,unlink"
            theme_advanced_buttons2: ""
            theme_advanced_buttons3: ""
            theme_advanced_toolbar_location: "top"

配置

您可以在 services.xml 中设置大量参数。您还可以在 app/config/config.yml 中调整一些选项(映射和模板)

参数

  • wowo_newsletter.queue(默认:newsletter_tube)- Beanstalkd 管道名称
  • wowo_newsletter.default.sender_name(默认:Wojciech Sznapka)- 电子邮件消息中的 "from" 名称
  • wowo_newsletter.default.sender_email(默认:wojciech@sznapka.pl)- 电子邮件消息中的 "from" 地址
  • wowo_newsletter.form.can.choose.contacts.via.form(默认:true)- 决定是否可以通过表单选择联系人
  • wowo_newsletter.form.has.delayed.sending(默认:true)- 决定表单是否允许延迟发送邮件(设置发送日期)

配置(config.yml)

示例

wowo_newsletter:
    placeholders:
        key1: value1
        key2: value3
        key3: value3
        name:       getName
        email:      getEmail
    templates:
        'template name': %kernel.root_dir%/Resources/mailing/mailing.html

在占位符中,您应该提供一个映射,其中键是占位符名称(例如:email)和值是联系人实体上的属性/获取器名称。有两个必填键:(email 和 name)。

通过模板,您可以设置 html 模板(包含相对于其目录的图像)源。默认情况下,它采用第一个位置(上面的 'template name'),并解析 HTML 模板和图像的文件系统路径。您可以添加自己的实现,以便用户可以从配置的模板中选择,甚至添加自己的模板(存储在数据库中)。

扩展和调整指南

您可以通过提供自己的联系人来源来扩展包。还有更多的扩展点,但这个可能是最可能用到的。

parameters:
    wowo_newsletter.contact_manager.class: Your\Bundle\NewsletterContactManager
    wowo_newsletter.model.contact.class: Your\Bundle\Entity\User

wowo_newsletter:
    placeholders:
        firstname:  getFirstname
        lastname:   getLastname
        email:      getEmail
    templates:
        'main template': %kernel.root_dir%/Resources/templates/newsletter/mailing.html

在上面的例子中,用户 是一个现有的实体,它具有姓名、姓和电子邮件等字段。为此,我们编写了 NewsletterContactManager,它实现了 Wowo\NewsletterBundle\Newsletter\Model\ContactManagerInterface 接口,并为该包提供了通过 Doctrine2 获取的联系人。

tracking