Как отправлять PDF отчет на Email из кода приложения

05.04.2016

Не секрет, что FastReport .Net позволяет отправлять отчеты по email. Но мало кто знает, как это сделать с помощью кода в пользовательском приложении. Так, чтобы вам не нужно было запускать каждый отчет и отправлять его по email вручную. Нужные отчеты будут автоматически отправлены на указанный почтовый адрес нажатием кнопки, или по расписанию.

Рассмотрим на примере, как отправить отчет в формате PDF по электронной почте.

Создаем приложение WindowsForms. Добавим кнопку и два текстовых поля. В одном мы будем вводить электронный адрес получателя, а во втором – почтовый сервер для исходящей почты.

 

Нам потребуются следующие библиотеки:

1
2
3
using FastReport;
using FastReport.Export;
using FastReport.Utils;

Создаем обработчик события нажатия кнопки:

     

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
 private void button1_Click(object sender, EventArgs e)
 {
 Config.ReportSettings.ShowProgress = false; //Disable progress window
 Report report1 = new Report(); //Create new report object
 report1.Load(Environment.CurrentDirectory+"\\text.frx"); //Load report
 report1.Prepare(); //Prepare report
 
 FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport(); //Cteate PDF export
 FastReport.Export.Email.EmailExport email = new FastReport.Export.Email.EmailExport(); //Create Email export
 
 //email mailer settings
 email.Account.Address = "gromozekaster@yandex.ru";
 email.Account.Name = "TestUser";
 email.Account.Host = textBox2.Text;
 email.Account.Port = 25;
 email.Account.UserName = "Gromozekaster";
 email.Account.Password = "Password";
 email.Account.MessageTemplate = "Test";
 email.Account.EnableSSL = true;
 
 //email addressee settings
 email.Address = textBox1.Text;
 email.Subject = "Test Report";
 email.MessageBody = "Test message";
 email.Export = pdf; //Set export type
 email.SendEmail(report1); //Send email
 }

Вначале я отключил окно прогресса в настройках отчета. Это не обязательно. Если вам это не нужно, просто не пишите эту строку кода. Затем создаем экземпляр объекта отчета и загружаем в него отчет. Перед экспортом необходимо подготовить отчет (Prepare), то есть построить его. Так как в теме статьи я озвучил PDF, то создаем объект экспорта в PDF. Аналогичным образом мы создаем экспорт в email.

Теперь мы можем настроить параметры экспорта в Email. В Account - параметры отправителя. В основном это настройки сервера исходящей почты.

Далее задаем параметры получателя, такие как: адрес электронной почты, тема письма, текст письма и экспорт в нужный тип файла. Тут нужно отметить, что нет необходимости производить экспорт в PDF, нужно только создать объект экспорта. Почтовый экспорт сам делает экспорт в заданный формат.

Если не задать параметр Export, то отчет будет отправлен в формате FPX. Это файл предварительного просмотра отчета. Вы сможете просмотреть, распечатать или экспортировать отчет, но не сможете редактировать его.

Наконец, мы отправляем письмо с помощью метода SendEmail. Ему обязательно нужно передать объект отчета.

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

2 сентября 2024

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

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

Как сделать отчет из C# проекта в МоиОтчеты Облако

В этой статье разберем пример, как с помощью SDK FastReport создавать отчеты и экспортировать их в любой удобный для вас формат.
1 ноября 2023

PDF/X, PDF/A, PDF/E: В чем разница и зачем так много форматов?

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