fab/messenger

向一群人发送邮件。消息被包裹在一个模板/布局中,后端用户可以在后端模块中自由编辑。

安装次数: 1,831

依赖: 1

建议者: 0

安全: 0

星标: 5

关注者: 2

分支: 8

开放问题: 4

类型:typo3-cms-extension

4.1.0 2022-11-03 14:23 UTC

This package is auto-updated.

Last update: 2024-09-20 19:00:42 UTC


README

消息扩展是TYPO3的一个扩展,用于以灵活的方式列出收件人并向他们发送邮件。该扩展基本上包含

  • 邮件由两部分组成:消息模板和可能的布局。布局将包裹模板。如果消息必须被包含有徽标或默认文本的页脚/页眉包围,这将非常有用。
  • 消息将发送包含HTML版本和同一邮件内的纯文本的多部分邮件
  • 正文消息可以用Markdown语法编写,并使用将在发送邮件时渲染的Fluid视图助手。
  • 消息可以被排队并计划进行大规模邮件发送。在这种情况下,邮件将通过调度任务或CLI命令发送。

https://raw.github.com/fabarea/messenger/master/Documentation/Screenshot.png

项目信息和版本

开发版本: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 专业网络顾问、网页设计和网站开发的网络代理