unclecheese / 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 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
。因为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()
接受一个成员对象数组或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类。真正的错误通过简单的PHP mail()
发送。
这不会污染数据库吗?我的网站发送了很多电子邮件。
为了维护,请使用PermamailCleanupTask
。它接受两个参数
unit
:要返回的时间单位count
:要返回的单位数
/dev/tasks/PermamailCleanupTask?count=30&unit=days
将删除所有超过30天的电子邮件。