Подтвердить что ты не робот

Редактор электронной почты HTML в приложении Windows Forms

Мы ищем элемент управления редактором WYSIWYG для нашего приложения Windows (vb.net или c #), чтобы пользователи могли создавать электронные письма в формате HTML (для отправки с использованием объектов SMTP в среде dot net) перед отправкой.

В настоящее время все доступные редакторы имеют одну из следующих проблем:

a) Они полагаются на mshtml.dll или элемент управления веб-браузера, который, как доказано для нас, ненадежен, как HTML-код и редактор не синхронизируются в Windows 2000 (IE6)

б) Они основаны на веб-технологиях, а не на контроле формы Windows

в) они помещают стили в заголовок документа (см. примечание ниже).

К сожалению, поскольку в этой статье по электронной почте в формате HTML описан единственный надежный способ заставить электронные письма в формате HTML работать со стилями, это использовать их встроенными, что в настоящее время кажется неподдерживаемым во многих редакторах.

Кто-нибудь имеет какой-либо опыт в этом или может предложить решение?

4b9b3361

Ответ 1

Я использовал этот, который немного ниже WebBrowser, но по-прежнему использует MSHTML, который выплевывает некоторые уродливый HTML. Для моих целей я делаю редактор с несколькими вкладками с режимом редактирования WYSIWYG и HTML (используя ICSharp.TextEditor) с классом Buffer для обновления при изменении вкладок. Как часть этого класса Buffer, я фактически запускает HTML через HTML Tidy и несколько бит scrub-n-replace, чтобы получить действительный XHTML.

Я предлагаю это только как решение, потому что я тоже не смог найти тот, который не был получен из MSHTML, и в конечном итоге просто пошел вперед, чтобы вышеупомянутое решение продолжало двигаться вперед.

Ответ 2

Мне также был нужен редактор WYSIWYG для проекта Windows Forms, над которым я работал. Я писал о предметах, которые я нашел здесь. В конце концов я использовал то, что обнаружил в CodeProject: текстовый редактор на основе Windows Forms с выводом HTML. Это нарушает (а) выше в том, что он использует элемент управления WebBrowser. Тем не менее, я не смог найти ничего хорошего, если бы не сделал этого (если вы не используете WebBrowser каким-либо образом, то вам, в основном, нужно написать свой собственный анализатор HTML и средство визуализации, чтобы справиться с "Что-вы- Смотрите "часть WYSIWYG). Хорошая вещь об этом элементе управления состоит в том, что источник легко настраивается, так что вы можете убрать и добавить параметры форматирования, как вам нужно (и если вы хотите, чтобы все стили были встроенными, вы можете сделать это также).

Ответ 3

Существует HTML Edit Control для .NET (раскрытие: я написал его).

Он не полагается на какой-либо веб-браузер; это элемент управления формой Windows; и он может справиться с атрибутом style=.

Это не совсем то, что вы хотите: поскольку он предназначен для WYSIWYM, на панели инструментов нет кнопок для редактирования встроенных стилей (хотя его механизм рендеринга отображает встроенные стили), панель инструментов позволяет вам указывать только элементы уровня блока, такие как <p> и <h1> и <ul> и <table>; но если бы вы захотели, вы могли бы спросить меня о добавлении функциональности (как описано в разделе Разработка новой функциональности).

Ответ 4

Вы можете попробовать .NET Win HTML Editor Control из SpiceLogic,

https://www.spicelogic.com/Products/NET-Win-HTML-Editor-Control-8

Их компонент может вставлять все локальные изображения и возвращать объект .NET MailMessage, который очень удобен для разработки почтового клиента.

Ответ 5

я использовал комбинацию a) и b)

: -)

Я использовал обертку вокруг mshtml и tinymce в веб-конвейере...

http://peitor.blogspot.com/2007/12/great-windows-forms-html-control.html

скриншоты включены.

Я думаю, вы должны попробовать этот контроль.

Ответ 6

Вместо поиска HTML-редактора рассмотрите вариант редактора RichText (который может быть намного проще создать), а затем преобразуйте окончательный текст в HTML-документ.

При условии, что вы должны использовать минимальный набор функций (жирный/курсив и т.д.), как создание RT-редактора, так и преобразование окончательного документа в формат HTML не должно быть трудным.

Если, с другой стороны, вам нужно использовать больше функций (например, таблицы), вам необходимо изучить Rich Text Format и реализовать необходимые функции.

Дополнительные ресурсы:

Ответ 7

Исходный код nikhil обеспечивает достойное решение. Я когда-то загрузил этот маленький компонент, я думаю, что он использует MSHTML. Но я не уверен в этом. Источник может загрузить здесь. Дайте мне знать, если это поможет:)

Ответ 8

Вы не упомянули, хотите ли вы заплатить за контроль, но если вы рекомендуете Actipro SyntaxEditor.

Ответ 9

Это мой первый вклад.

Вы можете использовать RichTextBox. Формат RTF более чем достаточно для создания электронной почты.

Недавно я писал о том, как загружать и сохранять на жесткий диск содержимое RichTextBox.

Позволяет копировать и вставлять. Он прост в использовании и с несколькими кнопками вы можете создавать свои собственные команды.

With RichTextBox1 
    .SelStart = 0 
    .SelLength = Len (. Text) 
    .SelColor = vbRed
End With

Пример загрузки и сохранения.

http://danielcatala.wordpress.com/2014/01/30/como-cargar-y-guardar-archivos-richtext-con-wpf/

Private Sub btnCarga(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click

    Dim archivoCarga As New StreamReader("prueba.rtf")
    With RichTextBox1
        .Selection.Select(.Document.ContentStart, RichTextBox1.Document.ContentEnd)
        .Selection.Load(archivoCarga.BaseStream, System.Windows.DataFormats.Rtf)
    End With
End Sub

Private Sub btnGuarda(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click

    Dim archivoSalida As New StreamWriter("prueba.rtf")
    Dim bs As Stream = archivoSalida.BaseStream

    With RichTextBox1
        .Selection.Select(RichTextBox1.Document.ContentStart,     RichTextBox1.Document.ContentEnd)
        .Selection.Save(bs, System.Windows.DataFormats.Rtf)
    End With
End Sub