smarcet/silverstripe-permamail

添加电子邮件数据库存储和CMS定义的电子邮件模板。

安装: 36

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 9

类型:silverstripe-module

1.3.1 2016-05-26 21:42 UTC

This package is not auto-updated.

Last update: 2024-09-18 09:56:43 UTC


README

====================== 此模块为SilverStripe核心Email类添加了几个增强功能

  • 在数据库中持久化已发送的电子邮件
  • 允许重新发送电子邮件
  • 提供用户自定义的电子邮件HTML模板
  • 发送测试电子邮件,其中包含您指定的变量
  • DataList中的成员发送电子邮件

安装

composer require unclecheese/silverstripe-permamail:dev-master

要求

  • SilverStripe 3.1.*
  • unclecheese/reflection-templates
  • unclecheese/gridfield-betterbuttons:1.2.*

使用方法

默认情况下,Permamail作为Email类的实例注入,这意味着Email::create()将实例化一个Permamail对象而不是Email。由于PermamailEmail的子类,API完全相同。

如果您想根据情况使用Permamail,只需在适当的地方使用new Permamail()new Email(),或者覆盖配置中的注入设置,以便Email是用于Email的类。

示例

$e = Email::create()
 	->setFrom('me@example.com')
 	->toMembers(Member::get())
 	->setSubject('Test email')
 	->setUserTemplate('my-template')
 	->populateTemplate(array(
 		'Member' => Member::get()->byID(2)
 	))
 	->send();

API完全相同,仅新增了两个方法

  • toMembers()接受一个包含Member对象的数组或SS_List,并使用它们的Email属性,向每个成员发送电子邮件。
  • setUserTemplate()接受一个字符串作为CMS中用户定义模板的标识符。更多信息请参阅下面的“管理”部分。

管理界面

Permamail提供了一个名为Email的新ModelAdmin接口,它提供两个标签页

发件箱电子邮件

显示所有已发送电子邮件的列表。提供重新发送选项。

screenshot

screenshot

电子邮件模板

允许创建用户定义的模板,带有默认的主题和“发件人”地址。

screenshot

发送测试电子邮件

screenshot

每个用户定义的模板都可以发送测试电子邮件,并用您指定的变量填充模板。为此,模板使用ReflectionTemplate类收集模板中的所有变量和块,并为您提供自定义分配给这些变量的值的机会。选项包括

  • 静态值(例如,硬编码)
  • 来自给定ClassName数据库的随机对象
  • 来自给定ClassName数据库的特定对象

screenshot

查询特定记录以注入到模板中

要运行自定义查询,您可以使用类似在ORM的filter()方法中使用数组的方式使用查询字符串,例如:Category=gardening&Title:StartsWith=A&Created:LessThan=2014-11-11

您可能有的问题

如果我使用自定义邮件发送者,如Mandrill或SendGrid怎么办?

不用担心。此模块不覆盖邮件发送者。它只是覆盖了包装邮件发送者的Email类。

当错误记录器发送电子邮件时怎么办。我不想将这些电子邮件持久化到数据库中。

除非您正在进行单元测试,否则错误记录器不会使用Email类。真正的错误通过简单的PHPmail()发送。

这不会污染数据库吗?我的网站发送了很多电子邮件。

为了维护,请使用PermamailCleanupTask。它接受两个参数

  • unit:要回退的时间单位
  • count:要回退的单位数

/dev/tasks/PermamailCleanupTask?count=30&unit=days将删除所有超过30天的电子邮件。