2014-11-24 5 views
0

В Ektron У меня есть форма, которая генерирует электронную почту HTML при отправке и отправляет ее в почтовый ящик ([email protected]). Приложение (MailReader) проверяет этот почтовый ящик, считывает сообщения, разбивает все разметки и сохраняет полученные сообщения для последующего использования. Это проблема, потому что весь текст из HTML-адреса электронной почты заканчивается тем, что вымыты вместе и совершенно нечитаемы кем-то, использующим приложение MailReader.Ektron Forms - Generate Plaintext Email

Например, этот HTML:

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

становится:

Header1Header2Some text in a paragraph. 

Я не могу изменить MailReader в любом случае, он всегда будет раздеться любую разметку, так что мое решение, чтобы иметь Ektron генерировать письмо который не содержит HTML для этой формы. Я знаю, что электронное письмо генерируется с использованием преобразований XSLT с файлом /Workarea/controls/forms/DefaultFormEmailBody.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 в стандартных случаях или использовать другой XSLT, если существует __nohtml, но я не знаю, код даже доступен.

Я был бы очень признателен, если бы кто-нибудь мог помочь мне найти шаблон, который позволит либо HTML, либо открытый текст на основе того, существует ли поле. Если нет, тогда было бы одинаково здорово, если бы кто-то мог указать мне на смысл преобразования XSLT в коде Ektron (если он даже доступен).

ответ

1

Я бы порекомендовал стратегию формы для генерации версии письма, которое вы создаете. Должен быть открытый переопределить void OnAfterSubmit (FormData formData, FormSubmittedData submitFormData, string formXml, CmsEventArgs eventArgs), которые позволят вам создать вытаскивание представленных данных формы (либо в исходном объекте, либо я верю, что он также возвращает xml. там вы можете просто проанализировать его и сохранить ваш html-файл.

+0

Я нашел OnAfterSubmit в /App_Code/CSCode/DxH/DxHFormStrategy.cs, поэтому я попытался поместить в него некоторый код регистрации. Сообщения никогда не появлялись в моем журнале. следуя руководству по добавлению расширения с использованием стратегии Ektron.Cms.Extensibility.Content.FormStrategy, не имеющей разницы в поведении. Я пробовал использовать тот же код ведения журнала в Ektron.Cms.Extensibility.ContentStrategy, и он работает нормально. Не уверен, почему FormStrategy не работает. Кажется, я не могу найти документацию по FormStrategy. – Relix

+0

Мне удалось получить FormStrategy extensi на работу, добавив добавив DxHFormStrategy в объект заводской конфигурации: в /objectFactory.config: типа <добавить имя = "Форма"> <добавить имя = "DxHFormStrategy" = "Ektron.Cms.Extensions.DxHFormStrategy "/> Relix