2014-11-24 36 views
0

在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转换点(如果它甚至可以访问的话),那也同样可怕。

回答

1

我会推荐一种表单策略来生成您构建的电子邮件的版本。应该有一个公共重载void OnAfterSubmit(FormData formData,FormSubmittedData submittedFormData,string formXml,CmsEventArgs eventArgs),这将允许您创建拉出提交的表单数据(无论是在原始对象还是我相信它也会返回xml。在那里你可以解析它并保存你的html文件

+0

我在/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

+0

我能够获得FormStrategy extensi 在/objectFactory.config: <添加名称= “表”> <添加名称= “DxHFormStrategy” 类型上加上添加DxHFormStrategy到对象工厂配置工作=“Ektron.Cms.Extensions。DxHFormStrategy“/> Relix 2014-12-01 17:50:25

相关问题