По умолчанию 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 предполагает отправку письма с прикрепленным отчетом, поэтому по умолчанию будет приложен шаблон отчета, если вы не задали определенный формат экспорта для прикрепленного файла.
Теперь посмотрим, что же мы получим в письме. Но сначала взгляните на оригинальный отчет:
Тут присутствуют красивые рамки, градиентные заголовки и картинки. Всего этого в текстовом представлении отчета не будет.
Вот так выглядит письмо с отчетом в сообщении:
Отчет вполне узнаваем. Если вам не принципиально показать внешний вид отчета, а нужно лишь донести информацию, то этот способ отправки отчета в теле письма вполне подойдет.