В 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 (если он даже доступен).
Я нашел OnAfterSubmit в /App_Code/CSCode/DxH/DxHFormStrategy.cs, поэтому я попытался поместить в него некоторый код регистрации. Сообщения никогда не появлялись в моем журнале. следуя руководству по добавлению расширения с использованием стратегии Ektron.Cms.Extensibility.Content.FormStrategy, не имеющей разницы в поведении. Я пробовал использовать тот же код ведения журнала в Ektron.Cms.Extensibility.ContentStrategy, и он работает нормально. Не уверен, почему FormStrategy не работает. Кажется, я не могу найти документацию по FormStrategy. – Relix
Мне удалось получить FormStrategy extensi на работу, добавив добавив DxHFormStrategy в объект заводской конфигурации: в /objectFactory.config: типа <добавить имя = "Форма"> <добавить имя = "DxHFormStrategy" = "Ektron.Cms.Extensions.DxHFormStrategy "/> objectStrategies> objectFactory> –
Relix