【问题标题】:Ektron Forms - Generate Plaintext EmailEktron 表单 - 生成纯文本电子邮件
【发布时间】:2014-11-24 15:40:04
【问题描述】:

在 Ektron 中,我有一个表单,它会在提交时生成 HTML 电子邮件并将其发送到邮箱 (foo@bar.com)。应用程序 (MailReader) 检查该邮箱,读取邮件,剥离所有标记,并保存生成的邮件以供以后使用。这是一个问题,因为 HTML 电子邮件中的所有文本最终都混合在一起,并且使用 MailReader 应用程序的人完全无法阅读。

例如,这个 HTML:

<h1>Header1</h1>
<div>
   <h2>Header2</h2>
   <p>Some text in a paragraph.</p>
</div>

变成:

Header1Header2Some text in a paragraph.

我无法以任何方式更改 MailReader,它总是会去除任何标记,因此我的解决方案是让 Ektron 生成一封仅包含此表单的不包含 HTML 的电子邮件。我知道电子邮件是使用带有文件 /Workarea/controls/forms/DefaultFormEmailBody.xslt 的 XSLT 转换生成的。

我的解决方案尝试涉及向名为“__nohtml”的表单添加隐藏输入。然后 XSLT 将执行以下操作:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:choose>
        <xsl:when test="/field[starts-with(@name, '__nohtml')]">
            <xsl:output method="text" />
        </xsl:when>
        <xsl:otherwise>
            <xsl:output method="html" />
        </xsl:otherwise>
    </xsl:choose>
    <xsl:template match="/">
        <xsl:choose>
            <xsl:when test="/field[starts-with(@name, '__nohtml')]">

                text output

            </xsl:when>
            <xsl:otherwise>

                html output

            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

但是当我使用它时它从不发送电子邮件。我尝试在自己的机器上使用此模板进行渲染,但出现错误。而且我还注意到w3 documentationxsl:output 元素只允许作为 顶级 元素。这可能解释了为什么我不能放它在元素中。

我也尝试过完全省略该元素,无论如何它似乎都默认为 HTML。

我已经尝试在我们的本地 Ektron 代码中搜索发生转换的点,以便我可以告诉 Ektron 在标准情况下使用默认 XSLT 或在存在 __nohtml 时使用不同的 XSLT,但我不知道该代码是否甚至可以访问。

如果有人可以帮助我找到一个模板,该模板可以根据字段是否存在允许 HTML 或纯文本,我将不胜感激。如果不是,那么如果有人能指出 Ektron 代码中的 XSLT 转换点(如果它甚至可以访问的话),那将同样很棒。

【问题讨论】:

    标签: forms email plaintext ektron


    【解决方案1】:

    我会推荐一种表单策略来生成您构建的电子邮件版本。应该有一个公共覆盖 void OnAfterSubmit(FormData formData, FormSubmittedDatamittedFormData, string formXml, CmsEventArgs eventArgs) 允许您创建提取提交的表单数据(在原始对象中或者我相信它也会返回 xml。从在那里你可以解析它并保存你的 html 文件。

    【讨论】:

    • 我在 /App_Code/CSCode/DxH/DxHFormStrategy.cs 中找到了 OnAfterSubmit,所以我尝试将一些日志记录代码放入其中。这些消息永远不会出现在我的日志中。我尝试按照使用策略 Ektron.Cms.Extensibility.Content.FormStrategy 添加扩展的指南进行操作,但行为没有差异。我尝试在 Ektron.Cms.Extensibility.ContentStrategy 中使用相同的日志记录代码,它记录正​​常。不知道为什么 FormStrategy 不起作用。我似乎在 FormStrategy 上找不到任何文档。
    • 我能够通过将 DxHFormStrategy 添加到对象工厂配置中来使 FormStrategy 扩展工作:在 /objectFactory.config 中:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多