Во вьювере предусмотрена возможность отправки отчета по Email. Для активации данной возможности достаточно установить свойство вьювера showSendEmailButton в значение True и добавить обработчик события onEmailReport на стороне Python сервера, в котором необходимо задать все параметры отправки Email. При необходимости, можно добавить вызов JavaScript события, в аргументах которого можно узнать необходимые данные для отправки письма, получить тип экспорта отчета, получить сам отчет, а также получить настройки экспорта отчета и при необходимости изменить их. Подробное описание доступных значений аргументов находится в разделе События вьювера.

 

app.py

 

from stimulsoft_reports.viewer import StiViewer

from stimulsoft_reports.events import StiEmailEventArgs

 

def emailReport(args: StiEmailEventArgs):

   settings = args.settions

 

viewer = StiViewer()

viewer.onEmailReport += emailReport

viewer.onEmailReport += 'emailReport'

 

 

viewer.html

 

<script>

  function emailReport(args) {

      let settings = args.settings;

   }

</script>

 

 

 

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

 

viewer.html

 

<script>

  function emailReport(args) {

       args.settings.subject = "Invoice: " + args.settings.subject;

   }

</script>

 

 

 

Чистый JavaScript не имеет функций работы с Email, для этой возможности реализованы функции для отправки на стороне Python сервера. Для отправки Email, на стороне Python сервера необходимо установить данные, такие как логин и пароль аккаунта, с которого будет производится отправка, а также настройки сервера - его адрес, порт и другие параметры. Для этого предназначено свойство settings, которое находится в аргументах события и представляет собой объект класса StiEmailSettings, содержащий все необходимые свойства. Дополнительно, в аргументах можно получить и изменить данные для отправки письма (тема письма, текст и имя файла отчета). Подробное описание доступных настроек находится в разделе События вьювера.

 

app.py

 

from stimulsoft_reports.viewer import StiViewer

from stimulsoft_reports.events import StiEmailEventArgs

 

def emailReport(args: StiEmailEventArgs):

   args.settings.fromAddr = 'mail.sender@stimulsoft.com'

   args.settings.host = 'smtp.stimulsoft.com'

   args.settings.port = 456

   args.settings.login = '********'

   args.settings.password = '********'

  return 'The Email has been sent successfully.'

 

viewer = StiViewer()

viewer.onEmailReport += emailReport

 

 

 

Пример проверки и изменения темы письма перед отправкой:

 

app.py

 

from stimulsoft_reports.viewer import StiViewer

from stimulsoft_reports.events import StiEmailEventArgs

 

def emailReport(args: StiEmailEventArgs):

  if len(args.settings.subject) == 0:

       args.settings.subject = args.formatName + ' report ' + args.settings.attachmentName

 

viewer = StiViewer()

viewer.onEmailReport += emailReport

 

 

 

Пример добавления адресов дополнительных получателей письма с отчетом:

 

app.py

 

from stimulsoft_reports.viewer import StiViewer

from stimulsoft_reports.events import StiEmailEventArgs

 

def emailReport(args: StiEmailEventArgs):

   args.settings.cc.append('extra_recipient_one@stimulsoft.com')

   args.settings.bcc.append('hidden_recipient_one@stimulsoft.com')

   args.settings.bcc.append('hidden_recipient_two@stimulsoft.com John Smith')

 

viewer = StiViewer()

viewer.onEmailReport += emailReport

 

 

 

Настройки отправки Email

Вьювер позволяет установить значения по умолчанию для формы отправки Email. Для этого предназначены свойства defaultEmailAddress, defaultEmailSubject и defaultEmailMessage. По умолчанию данные свойства являются пустыми.

 

app.py

 

from stimulsoft_reports.viewer import StiViewer

 

viewer = StiViewer()

viewer.options.email.defaultEmailAddress = 'recipient_address@stimulsoft.com'

viewer.options.email.defaultEmailSubject = 'New Invoice'

viewer.options.email.defaultEmailMessage = 'Please check the new invoice in the attachment'