2010-09-09 3 views
0

Необходимо выполнить слияние почты для приложения ASP.NET.Word Mail Merge для сервера ASP.NET

Рассмотренный только с помощью слова программно непосредственно, но это liscening последствия и не рекомендуется (http://support.microsoft.com/kb/257757)

Так смотрел в OpenXml/Word Automation Services. Но не уверен, может ли легко достичь слияния почты через это?

+0

Вы можете использовать страницу aspx для визуализации xml. Просто установите тип содержимого в правильный формат. –

+0

Проверьте это: ntemplates.codeplex.com –

ответ

1

У нас было такое требование 4-5 лет назад, а затем мы решили пойти с обычным самодельным решением. Вот схема решения, которое может вам помочь:

  1. Используйте текстовое поле с расширенными возможностями для создания почтового шаблона (пользователи могут создавать свои собственные письма). Используйте специальный синтаксис для вставки заполнителей для ваших данных в шаблон. Итак, у вас есть html-тело, содержащее заполнители.
  2. Когда необходимо создать почтовые сообщения для N записей, для каждой записи проанализируйте шаблон html для поиска заполнителей (можно сделать с использованием reg-ex) и замените их соответствующими данными.
  3. Сгенерированный HTML можно по электронной почте (или он может быть преобразован в PDF-файл или слово с использованием библиотек)

В действительности, это может означать много работы на основе фактических потребностей. Например, в нашем случае

  1. У нас есть репозиторий метаданных, который описывает бизнес-объекты и их атрибуты
  2. GUI для конечных пользователей, чтобы определить шаблон. Пользовательский интерфейс позволяет создавать шаблоны с несколькими частями (например, если вам нужно отправить сопроводительное письмо с вложениями), вставка различных заполнителей (мы поддерживаем поля, группы объектов, простую фильтрацию и т. Д.), Формат для части (html/pdf/doc), подробности о получатели электронной почты/факса (с точки зрения метаданных)
  3. Поддержка группировки сущностей - по сути, это способность имеет дочерние данные. Например, для печати письма о заказе вам нужно поставить таблицу для позиций (продуктов), заказанных в заказе. Там может быть любой уровень такого гнездования.
  4. Чтобы быть эффективным, существует среда выполнения, которая анализирует содержимое шаблона только один раз, а затем выполняет только замену. У нас также есть механизм запросов, который преобразует заполнители метаданных в запрос для извлечения данных и т. Д.

Было бы здорово, если бы какой-либо готовый инструмент для такой вещи, но, как таковой, я ничего не знаю.

EDIT: Все вышеприведенное релевантно, если ваши требования состоят в том, чтобы определить пользовательские шаблоны писем. Если у вас есть только предопределенный набор шаблонов, тогда решение может быть намного проще - например, (как указал Ив), используя aspx-файлы с выражениями привязки данных, чтобы получить тело html/xml, а затем преобразовать его в соответствующий формат. Затем вы можете использовать HttpServerUtility.Execute для захвата вывода страницы для любого количества записей.

Смежные вопросы