Отправка отчета по Email
Во вьювере предусмотрена возможность отправки отчета по 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. Для этого предназначены свойства 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'
|