【发布时间】: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 documentation 说 xsl:output 元素只允许作为 顶级 元素。这可能解释了为什么我不能放它在元素中。
我也尝试过完全省略该元素,无论如何它似乎都默认为 HTML。
我已经尝试在我们的本地 Ektron 代码中搜索发生转换的点,以便我可以告诉 Ektron 在标准情况下使用默认 XSLT 或在存在 __nohtml 时使用不同的 XSLT,但我不知道该代码是否甚至可以访问。
如果有人可以帮助我找到一个模板,该模板可以根据字段是否存在允许 HTML 或纯文本,我将不胜感激。如果不是,那么如果有人能指出 Ektron 代码中的 XSLT 转换点(如果它甚至可以访问的话),那将同样很棒。
【问题讨论】:
标签: forms email plaintext ektron