2014-11-24 112 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

相關問題