Редактор электронной почты HTML в приложении Windows Forms - PullRequest
20 голосов
/ 12 августа 2008

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

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

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

b) Это веб-интерфейс, а не элемент управления формой Windows

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

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

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

Ответы [ 9 ]

3 голосов
/ 12 августа 2008

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

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

2 голосов
/ 25 июня 2012

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

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

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

2 голосов
/ 09 сентября 2010

Это HTML Edit Control для .NET (раскрытие: я написал).

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

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

2 голосов
/ 12 августа 2008

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

1 голос
/ 16 июля 2010

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

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

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

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

1 голос
/ 03 ноября 2008

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

: -)

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

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

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

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

0 голосов
/ 16 февраля 2014

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

Вы можете использовать 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
0 голосов
/ 27 августа 2008

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

0 голосов
/ 21 августа 2008

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

...