smarcet / silverstripe-permamail
添加电子邮件数据库存储和CMS定义的电子邮件模板。
Requires
- silverstripe/framework: ~3.2
- unclecheese/betterbuttons: ~1.3
- unclecheese/display-logic: ~1.3
- unclecheese/reflection-templates: dev-master
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。由于Permamail是Email的子类,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接口,它提供两个标签页
发件箱电子邮件
显示所有已发送电子邮件的列表。提供重新发送选项。
电子邮件模板
允许创建用户定义的模板,带有默认的主题和“发件人”地址。
发送测试电子邮件
每个用户定义的模板都可以发送测试电子邮件,并用您指定的变量填充模板。为此,模板使用ReflectionTemplate类收集模板中的所有变量和块,并为您提供自定义分配给这些变量的值的机会。选项包括
- 静态值(例如,硬编码)
- 来自给定
ClassName数据库的随机对象 - 来自给定
ClassName数据库的特定对象
查询特定记录以注入到模板中
要运行自定义查询,您可以使用类似在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天的电子邮件。




