fab /messenger
向一群人发送邮件。消息被包裹在一个模板/布局中,后端用户可以在后端模块中自由编辑。
Requires
- php: ^8.0
- fab/vidi: *
- michelf/php-markdown: ^1.9
- typo3/cms-core: ^11.0
Requires (Dev)
- rector/rector: ^0.13.9
README
消息扩展是TYPO3的一个扩展,用于以灵活的方式列出收件人并向他们发送邮件。该扩展基本上包含
- 邮件由两部分组成:消息模板和可能的布局。布局将包裹模板。如果消息必须被包含有徽标或默认文本的页脚/页眉包围,这将非常有用。
- 消息将发送包含HTML版本和同一邮件内的纯文本的多部分邮件。
- 正文消息可以用Markdown语法编写,并使用将在发送邮件时渲染的Fluid视图助手。
- 消息可以被排队并计划进行大规模邮件发送。在这种情况下,邮件将通过调度任务或CLI命令发送。
项目信息和版本
开发版本:https://github.com/fabarea/messenger.git
composer require fab/messenger
关于最新开发或发布的闪讯http://twitter.com/fudriot
安装
扩展在扩展管理器中有自解释的设置。对于特定上下文,您可以配置将所有邮件重定向到配置的用于测试目的的邮件,以防止消息泄露到您的开发环境之外。
消息编写
在编写内容时,您可以充分利用Fluid语法并在您的消息中使用视图助手。标记应按以下方式定义:{first_name},将在渲染电子邮件时进行处理。
注意,您可以使用双大括号{{text}}将标记解释为HTML。这相当于在Fluid中使用<f:format.raw>{text}</f:format.raw>。
您可能希望将所有URL的前缀添加到域名(绝对URL),这是使链接可点击所必需的。否则,链接将相对于无,这将对最终用户不起作用。
` config.absRefPrefix = https://domain.tld/ `
检索已发送的消息
在FE上显示已发送消息或队列中的消息可能很有用。我们可以通过了解消息的UUID来实现这一点。在新闻通讯中,我们经常看到如下链接:
# 显示已发送消息 https://domain.tld/?type=1556100596&uuid=a7760851-2349-4b5c-bc9e-ae43eecc01a9
# 显示队列中要发送的消息 https://domain.tld/?type=1556100596&uuid=a7760851-2349-4b5c-bc9e-ae43eecc01a9&source=queue ```
这可以在TYPO3的HTML内容元素中使用以生成指向在浏览器中发送给用户的内容的链接。
` 如果此电子邮件显示不正确 <a href="https://domain.tld?type=1556100596&uuid={uuid}">点击此处</a>。 `
消息API
用法
$templateIdentifier = 1; // uid $layoutIdentifier = 1; // uid $recipients = array('john@doe.com' => 'John Doe'); $markers = array( 'first_name' => 'John', 'last_name' => 'Doe', ); $languageIdentifier = 0; // sys_language_uid $pathToFile = 'some-path-to-file'; // @todo replace me with FAL identifier /** @var \Fab\Messenger\Domain\Model\Message $message */ $message = GeneralUtility::makeInstance(Fab\Messenger\Domain\Model\Message:class); # Minimum required to be set $message->setMessageTemplate($templateIdentifier) ->setTo($recipients); # Additional setter $message->assign('foo', $bar) ->setLanguage($languageIdentifier) ->addAttachment($pathToFile) ->setMessageLayout($layoutIdentifier); # Send the email... $isSent = $message->send();
队列
消息具有排队邮件的功能。在发送大量邮件时建议使用此功能。
/** @var \Fab\Messenger\Domain\Model\Message $message */ $message = GeneralUtility::makeInstance('Fab\Messenger\Domain\Model\Message'); $message-> ... // same as in the example above ->enqueue();
配置
以下配置应配置。默认发送者名称
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'] = 'John Doe'; $GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] = 'john@doe.com';
当应用程序上下文处于开发状态时,可以定义一个默认的目标接收者,便于向真实人物发送不想要的电子邮件。
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['development']['recipients'] = 'fabien@omic.ch';
发送电子邮件到前端用户的工具
当安装了EXT:vidi时,信使扩展了BE的前端用户模块,使得可以向选定的用户或用户组发送大量消息。有一个BE模块可以查看队列状态和等待发送的消息。请考虑设置调度任务,以便在消息放入队列并通过补丁发送时正确发送电子邮件。
您有配置可能的发送者列表(显示为“发件人”的联系人)的可能性。它们可以来自三个不同的来源
如果定义了电子邮件地址,则为当前登录的BE用户。
PHP全局配置defaultMailFromName和defaultMailFromAddress
用户TSConfig
options.messenger { senders { 0 { name = My Name email = test@example.tld } } }
CLI
信使提供了两个命令。
批量发送消息并将它们从队列中删除(每批100条消息)
./vendor/bin/typo3 messenger:dequeue
发送日期超过100天的消息将被删除
./vendor/bin/typo3 messenger:cleanUp
消息视图辅助工具
信使提供了两个有趣的视图辅助工具。
第一个是从标记数组中渲染通用项
# The minimum declaration <m:widget.show item="markerName" dataType="tx_ext_foo"/> # Additional attributes <m:widget.show item="markerName" dataType="tx_ext_foo" exclude="{0: 'fieldName'}" displaySystemFields="true"/> {namespace m=Fab\Messenger\ViewHelpers}
第二个是用于检索电子邮件正文。对于显示用户反馈消息很有用
<m:show.body key="{settings.messageTemplate}"/>
Fluid模板
如果模板存储在外部文件中,就可以使用更多Fluid的强大功能。在这种情况下,可以使用布局。它们必须存储在名为“Layouts”的文件夹中,位于模板本身的同一文件夹中。
例如,如果模板位于“EXT:foo/Resource/Private/Templates/Mail/Bar.html”,它可能引用位于“EXT:foo/Resource/Private/Templates/Mail/Layouts”的布局。
此外,在定义消息模板时可以选择“仅Fluid”作为模板引擎。在这种情况下,Markdown解释器不会运行。这意味着Fluid模板可以更自由地编写。
赞助商
- Ecodev 持续发展工程 - CMS - 网络应用 - 数据库 - 网页设计
- Gebrüderheitz - 网络通信代理
- Cobweb 专业网络顾问、网页设计和网站开发的网络代理