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

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

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

2 сентября 2024

Обзор облачного решения для создания и управления отчетами

МоиОтчеты Облако — это мощное облачное решение для создания и управления отчетами, обеспечивающее широкий спектр возможностей, от создания документов в различных форматах до интеграции с корпоративными системами.
12 августа 2024

Как собрать и установить плагин Postgres в FastReport .NET

В этой статье описывается подключение к базе посредством плагина FastReport .NET для дизайнера отчетов из Visual Studio через NuGet-сервер.
8 августа 2024

Как установить FastReport .NET и его компоненты в Windows

Пошаговая инструкция по онлайн и ручной установке через регистрационный код FastReport .NET и его компонентов в Windows.