Очень часто в производстве возникает задача разослать несколько писем с вложением в формате pdf. Это могут быть не только счета или фактуры, но и извещения или приглашения, персональные сообщения об акциях и тому подобное. Конечно, еще со свадьбы в записной книжке завалялось сотня другая человек. Текст письма может быть как статическим, так и вариативным. И тут обегаешься по всему интернету с вопросом как это сделать…
Возьмем за основу письмо следующего содержания
![](https://habrastorage.org/r/w1560/webt/uc/qr/ae/ucqrae5poqrkqcpdz2yqnt9cd8m.png)
Текст тела письма при рассылке не будет меняться, за исключением текста, выделенного курсивом, соответственно отправитель тоже будет один, а вот адресатов будет несколько
Подготовим базу адресатов в xml формате, я не буду пояснять что там значит заголовок, думаю, что опытный читатель разберется сам. Отмечу только, что формат легко меняется под ваши данные, которые набиваются по вашему индивидуальному шаблону
Итак, база получателей (оригинальные xml файлы размещены по ссылке в конце. Вы можете скачать их и изменить по собственному желанию)
![](https://habrastorage.org/r/w1560/webt/se/7f/fn/se7ffnb7e31w22fztuvflqe3y7o.png)
В качестве модели имеем, набор полей Дата, Название компании, Имя, Адрес, Город, Телефон
Скачиваем демоверсию FastReport и открываем Letter_Blank.frx
![](https://habrastorage.org/r/w1560/webt/vm/vr/yx/vmvryxdgpt4-pez2i4udydp7edg.png)
В рассматриваем случае дата отправки письма в правом верхнем углу тянется из xml файла, поэтому заменяем этот текст на
![](https://habrastorage.org/r/w1560/webt/6w/oe/wh/6woewhm58jftsuleu2xhulaawog.png)
Что означает, что текст будет тянуться из поля Data таблицы Letters
Аналогично проделываем подобную подстановку с другими динамическими значениями (они для наглядности выделены красным)
![](https://habrastorage.org/r/w1560/webt/n0/g6/54/n0g654cibuxumh3pbbxypxmd5hg.png)
Более подробно вы можете ознакомится с этими заменами в файле Letter.frx
Запускаем отчет и получаем
![](https://habrastorage.org/r/w1560/webt/r3/ge/tp/r3getphmpy56iyqxwacxapcfgoa.png)
Печатаем и рассылаем. Не сложно написать программу, которая будет делать весь набор подобных операций и рассылать на электронную почту, об этом речь пойдет в другой раз)
github.com/ufocombat/Letters
Возьмем за основу письмо следующего содержания
![](https://habrastorage.org/webt/uc/qr/ae/ucqrae5poqrkqcpdz2yqnt9cd8m.png)
Текст тела письма при рассылке не будет меняться, за исключением текста, выделенного курсивом, соответственно отправитель тоже будет один, а вот адресатов будет несколько
Подготовим базу адресатов в xml формате, я не буду пояснять что там значит заголовок, думаю, что опытный читатель разберется сам. Отмечу только, что формат легко меняется под ваши данные, которые набиваются по вашему индивидуальному шаблону
Итак, база получателей (оригинальные xml файлы размещены по ссылке в конце. Вы можете скачать их и изменить по собственному желанию)
![](https://habrastorage.org/webt/se/7f/fn/se7ffnb7e31w22fztuvflqe3y7o.png)
В качестве модели имеем, набор полей Дата, Название компании, Имя, Адрес, Город, Телефон
<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
![](https://habrastorage.org/webt/vm/vr/yx/vmvryxdgpt4-pez2i4udydp7edg.png)
В рассматриваем случае дата отправки письма в правом верхнем углу тянется из xml файла, поэтому заменяем этот текст на
![](https://habrastorage.org/webt/6w/oe/wh/6woewhm58jftsuleu2xhulaawog.png)
Что означает, что текст будет тянуться из поля Data таблицы Letters
Аналогично проделываем подобную подстановку с другими динамическими значениями (они для наглядности выделены красным)
![](https://habrastorage.org/webt/n0/g6/54/n0g654cibuxumh3pbbxypxmd5hg.png)
Более подробно вы можете ознакомится с этими заменами в файле Letter.frx
Запускаем отчет и получаем
![](https://habrastorage.org/webt/r3/ge/tp/r3getphmpy56iyqxwacxapcfgoa.png)
Печатаем и рассылаем. Не сложно написать программу, которая будет делать весь набор подобных операций и рассылать на электронную почту, об этом речь пойдет в другой раз)
github.com/ufocombat/Letters