Очень часто в производстве возникает задача разослать несколько писем с вложением в формате pdf. Это могут быть не только счета или фактуры, но и извещения или приглашения, персональные сообщения об акциях и тому подобное. Конечно, еще со свадьбы в записной книжке завалялось сотня другая человек. Текст письма может быть как статическим, так и вариативным. И тут обегаешься по всему интернету с вопросом как это сделать…

Возьмем за основу письмо следующего содержания



Текст тела письма при рассылке не будет меняться, за исключением текста, выделенного курсивом, соответственно отправитель тоже будет один, а вот адресатов будет несколько

Подготовим базу адресатов в xml формате, я не буду пояснять что там значит заголовок, думаю, что опытный читатель разберется сам. Отмечу только, что формат легко меняется под ваши данные, которые набиваются по вашему индивидуальному шаблону

Итак, база получателей (оригинальные xml файлы размещены по ссылке в конце. Вы можете скачать их и изменить по собственному желанию)




В качестве модели имеем, набор полей Дата, Название компании, Имя, Адрес, Город, Телефон

  <Date>Friday, 23/05/2019</Date> 
  <CompanyName>Qualcomm</CompanyName> 
  <Name>Lucas</Name> 
  <Address>711-2880 Nulla St.</Address> 
  <City>Mankato Mississippi 96522</City> 
  <Phone>(257) 563-7401</Phone>


Скачиваем демоверсию FastReport и открываем Letter_Blank.frx



В рассматриваем случае дата отправки письма в правом верхнем углу тянется из xml файла, поэтому заменяем этот текст на



Что означает, что текст будет тянуться из поля Data таблицы Letters

Аналогично проделываем подобную подстановку с другими динамическими значениями (они для наглядности выделены красным)



Более подробно вы можете ознакомится с этими заменами в файле Letter.frx

Запускаем отчет и получаем



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

github.com/ufocombat/Letters

Комментарии (5)


  1. gecube
    24.05.2019 21:25

    Ну, и какая ценность в этом? XML — фу. А чего не в ямле-маркдауне? Почему на FastReport? А не самописный скрипт на python?


  1. yarosroman
    25.05.2019 05:19

    а причем тут .net?


    1. ufocombat Автор
      27.05.2019 08:25

      Можно все руками делать а можно в .net запускать и рассылать все планирую продолжить данную статью


  1. a-tk
    26.05.2019 18:19

    Если на входе XML, то почему не XSL-FO?


    1. ufocombat Автор
      27.05.2019 08:26

      у FR был такая демо база, сделал на ее основе. бд могут быть очень разнообразными…