unclecheese/silverstripe-permamail

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

安装次数: 14,649

依赖项: 0

建议者: 0

安全: 0

星标: 20

关注者: 5

分支: 9

开放问题: 7

类型:silverstripe-module

1.3.2 2017-07-03 04:23 UTC

This package is auto-updated.

Last update: 2024-08-29 03:56:25 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()接受一个成员对象数组或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类。真正的错误通过简单的PHP mail()发送。

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

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

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

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