根据下拉列表中的选择将 TYPO3 EXT:powermail 邮件发送给不同的收件人

Send TYPO3 EXT:powermail mail to different receivers depending on selection in a dropdown

我经常需要根据表单中选择字段的选择将 powermail-form 发送给不同的接收者。 我正在使用 TYPO3 7.6.x 和 Powermail 3.3.0 如何做到这一点?

在 EXT:powermail 的 slackchannel 中@alex-kellner 的帮助下,我找到了一个非常简单的解决方案:

基本上需要 2 个步骤:

步骤1

select 字段中选项的值。 您需要在 select 字段中为您的选项添加值。这可以通过将管道 | 添加到您的选项并简单地添加值

来完成
MyRecieverEmail 1 | 1

MyRecieverEmail 2 | 2

MyRecieverEmail 3 | 3

除此之外,您还需要知道您的字段的标记/变量/个别字段名。您可以在字段的 extended 选项卡中找到该名称。

如果需要,您还可以为该字段指定一个 "own" 变量名。该变量用 {} 包装,但您不会在步骤 2

中使用这些

步骤 2

现在您需要在设置字段中添加一些 TS。

背景信息:基本上这会更改表单的接收者:

plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = your@email.com

现在您需要检查在表单中选择了哪个选项。这是通过全局条件完成的:

[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]

其中 yourVariableFieldname 是字段中 extended 选项卡中的单个字段名称,1 是第一个选项的值 (MyRecieverEmail 1)

通过使用此 TS,如果在表单中选择第一个选项 MyRecieverEmail 1,表单将发送到您的@email.com:

[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = your@email.com
[global]

您现在可以根据需要添加任意多的条件。完整的例子是:

[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 1]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yourfirst@email.com
[global]
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 2]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yoursecond@email.com
[global]
[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 3]
plugin.tx_powermail.settings.setup.receiver.overwrite.email = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.email.value = yourthird@email.com
[global]

请注意,这将负责在您的 TYPO3-Install 中考虑到此 TS 的每个字段名称为 {yourVariableFieldname} 的字段。 如果您以多种形式完全像这样使用此字段,这将很有用。 如果您不想由它负责,您有 2 个选项可以避免这种情况:

  1. 仅将 TS 放置在表单所在的页面上。

  2. 您可以将此添加到您的全局条件中:

    && [globalString = GP:tx_powermail_pi1|mail|form = 123]

其中 123 是表单的 ID。

这看起来像这样:

[globalString = GP:tx_powermail_pi1|field|yourVariableFieldname = 2] && [globalString = GP:tx_powermail_pi1|mail|form = 123]

从 9.5 开始是这样的:

[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 1 ]

应该有效

这对我有用:

[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 1 ]
plugin.tx_powermail.settings.setup {
    receiver.overwrite {
        email.value = MYEMAIL
        email = TEXT
    }
}
[END]

[traverse(request.getParsedBody(), 'tx_powermail_pi1/field/yourVariableFieldname') == 2 ]
plugin.tx_powermail.settings.setup {
    receiver.overwrite {
        email.value = MYEMAIL2
        email = TEXT
    }
}
[END]