Как вставить отчет в тело письма

09.07.2020

По умолчанию FastReport.Net позволяет отправлять электронные письма с вложенным файлом отчета в одном из доступных форматов экспорта. Однако, иногда требуется включить содержимое отчета в тело письма. Такая возможность может быть востребована, если предполагается обсуждения содержимого отчета в переписке. В ответах на письмо с прикрепленным файлом этого файла уже не будет. Поэтому, придется потратить время, чтобы найти письмо с аттачем, чтобы посмотреть отчет и понять, о чем идет речь. Также, это может быть полезно, если вы просматриваете почту в мобильном устройстве. Скачивать файл отчета и открывать его в другом приложении - это не очень удобно.

В FastReport.Net мы может отправлять письма из кода пользовательского приложения, а значит – задавать настройки писем. К сожалению, в сообщении письма может быть только обычный текст, без картинок и html разметки. Поэтому, мы можем использовать экспорт отчета в формат txt, чтобы затем вставить его в тело письма.

Конечно, формат экспорта txt накладывает множество ограничений – полное отсутствие графики, интерактивных объектов и сложной разметки – только текст. Поэтому его стоит использовать только в простых отчетах с понятной иерархией данных и простой разметкой. Идеальный пример – простые списки. Рассмотрим пример отправки письма с отчетом в сообщении:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//Создаем экспорт в текстовый формат
FastReport.Export.Text.TextExport text = new FastReport.Export.Text.TextExport();
//Выполняем экспорт в файл или поток
 report.Export(text, "Template.txt");
//Создаем экспорт в письмо
 FastReport.Export.Email.EmailExport email = new FastReport.Export.Email.EmailExport();
//Задаем заголовок письма
 email.Subject = "Test";
//Задаем сообщение – ответ в текстовом формате
 email.MessageBody = File.ReadAllText("Template2.txt"); 
//Задаем адрес получателя
 email.Address = "gromozeka@gmail.com";
//Задаем адрес отправителя
 email.Account.Address = "gromozeka@yandex.ru";
//Задаем сервер отправки писем
 email.Account.Host = "smtp.yandex.ru";
//Задаем имя отправителя
 email.Account.Name = "gromozeka";
// Задаем имя пользователя
 email.Account.UserName = "gromozeka";
//Задаем пароль пользователя
 email.Account.Password = "******";
//Задаем порт почтового сервера
 email.Account.Port = 25;
//Включаем шифрование, если требуется
 email.Account.EnableSSL = true;
//Отправляем письмо
 email.SendEmail(report);

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

Теперь посмотрим, что же мы получим в письме. Но сначала взгляните на оригинальный отчет:

Report template for the email

Тут присутствуют красивые рамки, градиентные заголовки и картинки. Всего этого в текстовом представлении отчета не будет.

Вот так выглядит письмо с отчетом в сообщении:

How the report looks in email body

Отчет вполне узнаваем. Если вам не принципиально показать внешний вид отчета, а нужно лишь донести информацию, то этот способ отправки отчета в теле письма вполне подойдет.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.