在Ektron中,我有一个表单在提交时生成HTML电子邮件并将其发送到邮箱([email protected])。应用程序(MailReader)检查该邮箱,读取消息,去除所有标记,并保存结果消息供以后使用。这是一个问题,因为HTML电子邮件中的所有文本最终都会被混合在一起,并且被使用MailReader应用程序的用户完全无法读取。Ektron表格 - 生成纯文本电子邮件
例如,这个HTML:
<h1>Header1</h1>
<div>
<h2>Header2</h2>
<p>Some text in a paragraph.</p>
</div>
变为:
Header1Header2Some text in a paragraph.
以任何方式我不能改变的MailReader,它总是会剥夺任何标记,所以我的解决办法是让晔生成电子邮件不包含仅用于此表单的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转换点(如果它甚至可以访问的话),那也同样可怕。
我在/App_Code/CSCode/DxH/DxHFormStrategy.cs中找到了OnAfterSubmit,所以我试着把一些日志代码放到它里面,这些消息从来没有出现在我的日志中。按照指导使用战略Ektron.Cms.Extensibility.Content.FormStrategy添加一个扩展没有行为差异我试着在Ektron.Cms.Extensibility.ContentStrategy使用相同的日志记录代码,它记录很好。不知道为什么FormStrategy我似乎无法在FormStrategy上找到任何文档 – Relix 2014-12-01 16:40:31
我能够获得FormStrategy extensi 在/objectFactory.config: <添加名称= “表”> <添加名称= “DxHFormStrategy” 类型上加上添加DxHFormStrategy到对象工厂配置工作=“Ektron.Cms.Extensions。DxHFormStrategy“/> objectStrategies> objectFactory> –
Relix
2014-12-01 17:50:25