blueways/bw-email

TYPO3 扩展,用于发送响应式电子邮件模板

安装: 4,147

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放性问题: 3

类型:typo3-cms-extension

v3.0.0 2023-06-11 18:21 UTC

README

这是 bw_email 扩展的官方文档。

关于

您可以使用此扩展发送整个页面或任何具有 TCA 定义的元素。

模板使用 Zurb Foundation Inky 进行解析。您可以在流体模板中使用 Inky 标记来生成大多数邮件客户端所需的表格标记。

安装

  • 通过 composer 安装 composer require blueways/bw-email
  • 在扩展管理器中激活
  • 包含静态 TypoScript 模板

模板

该扩展提供了一些默认模板,位于 ÈXT:bw_email/Resources/Private/Templates。您可以通过设置常量来覆盖模板。

plugin.tx_bwemail {
    view {
        templateRootPath =
        partialRootPath =
        layoutRootPath =
    }
}

默认邮件设置

要注册新模板,请使用 TypoScript 设置

plugin.tx_bwemail {
    settings {
        # Remove all default templates
        templates >
        templates {
            TemplateFileName = Title of Template
        }

        # Default setup
        css = EXT:bw_email/Resources/Public/Css/app.css
        senderAddress = noreply@example.com
        senderName = Example sender name
        replytoAddress =
        subject = Example subject
        template = Default
        showUid = 1
        recipientAddress =
    }
}

数据源

从一开始,您就可以在电子邮件向导中向电子邮件地址发送单个电子邮件。如果您想向多个人发送电子邮件,您可以创建一个电子邮件数据源条目并选择以下内置连接器之一

  • fe_users
  • CSV 文件(即将推出)

在其他扩展中使用

您可以在自己的扩展中使用 Blueways\View\EmailView 以 Inky 语法渲染响应式电子邮件 HTML。它的工作方式与 StandaloneView 相同。

扩展

您可以使用 DataSource-Provider 或创建自己的 ContactProvider。

数据源模型

如果您想通过 Backend 配置源,您可以使用现有的 DataSource 模型。通过扩展 ContactSource 模型并实现 getContacts() 方法来创建自己的模型。

别忘了通过 typoscript 注册继承

config.tx_extbase.persistence.classes {
    Blueways\BwEmail\Domain\Model\ContactSource {
        subclasses {
            Vendor\Extension\YourModel = Vendor\Extension\YourModel
        }
    }

    Vendor\Extension\YourModel.mapping {
        recordType = Vendor\Extension\YourModel
        tableName = tx_bwemail_domain_model_contactsource
    }
}

ContactProvider 服务

如果您想使用外部数据,您可以编写自己的 ContactProvider。只需从 Blueways\BwEmail\Service\ContactProvider 扩展并注册类即可。

已知问题

  • CSS 文件需要在电子邮件模板中硬编码(参见 Default.html)
  • 内联 RTE 链接被额外的 <p></p> 包装,这会导致换行
  • 内部链接可能损坏

在其他内容元素中使用

您可以在其他内容元素(如 Textmedia 或 News)中使用电子邮件向导。只需添加一个具有 TCA-RenderType "sendMailButton" 的元素。以下是如何将发送邮件按钮添加到 tt_content 元素的示例

// TCA/Overrides/tt_content.php
<?php

$tempColumns = [
    'mail_button' => [
        'label' => 'Send this tt_content',
        'config' => [
            'type' => 'passthrough',
            'renderType' => 'sendMailButton',
        ],
    ]
];

ExtensionManagementUtility::addTCAcolumns('tt_content', $tempColumns);
ExtensionManagementUtility::addToAllTCAtypes(
    'tt_content',
    'mail_button',
    '',
    'before:CType'
);

当前记录将在 Fluid 模板中以 {record} 的形式可用。

要注入其他元素或覆盖默认设置,您可以使用 tableOverrides TypoScript 设置。

plugin.tx_bwemail {
    settings {
        subject = Default subject in all places
        tableOverrides {
            tt_content {
                subject = New subject
                recipientName = FIELD:header
                typoscriptSelects {
                    latestNews {
                        table = tx_news
                        select {
                            pidInList = 3
                            orderBy = sorting
                            max = 3
                        }
                    }
                }
            }
        }
    }
}

使用 typoscriptSelects 设置,您可以将记录插入到电子邮件模板中。在上面的示例中,您可以使用 <f:for each="{latestNews}" as="news">{news.title}</f:for> 显示最新的新闻记录。

待办事项

  • 更好的翻译
  • 更好的默认模板组织
  • 新 v9 的绝对 URL 处理
  • 将提供者设置移至 TypoScript

改进意见

  • 在消息中嵌入图片
  • 独立的后端模块
  • 发送邮件日志
  • 为 Foundation for Email 提供 Sass 编译器