Во вьювере предусмотрена возможность отправки отчета по Email. Для активации данной возможности необходимо установить свойство вьювера showSendEmailButton в значение true и добавить обработчик события onEmailReport.

 

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

 

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

 

viewer.php

 

<?php

use Stimulsoft\Viewer\StiViewer;

use Stimulsoft\Events\StiEmailEventArgs;

use Stimulsoft\Report\StiReport;

use Stimulsoft\StiResult;

 

$viewer = new StiViewer();

$viewer->options->toolbar->showSendEmailButton = true;

 

$viewer->onEmailReport = function (StiEmailEventArgs $args) {

$args->settings->from = 'mail.sender@stimulsoft.com';

$args->settings->host = 'smtp.stimulsoft.com';

$args->settings->login = '********';

$args->settings->password = '********';

 

return StiResult::getSuccess('The Email has been sent successfully.');

};

 

$viewer->process();

?>

 

 

 

Полный код примера доступен на GitHub.

 

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

 

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

 

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

 

viewer.php

 

<?php

use Stimulsoft\Viewer\StiViewer;

 

$viewer = new StiViewer();

$viewer->options->toolbar->showSendEmailButton = true;

$viewer->onEmailReport = 'emailReport';

$viewer->process();

?>

 

...

 

<script>

function emailReport(args) {

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

}

</script>

 

 

 

При выполнении отправки Email в первую очередь будет вызвано JavaScript событие (если оно задано), затем будет вызвано событие на стороне PHP сервера. Таким образом, можно провести валидацию и корректировку значений непосредственно перед отправкой письма.

 

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

 

viewer.php

 

$viewer->onEmailReport = function (StiEmailEventArgs $args) {

if (strlen($args->settings->subject ?? '') == 0)

$args->settings->subject = "{$args->formatName} report {$args->settings->attachmentName}";

 

return StiResult::getSuccess('The Email has been sent successfully.');

};

 

 

 

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

 

viewer.php

 

$viewer->onEmailReport = function (StiEmailEventArgs $args) {

$args->settings->cc[] = 'extra_recipient_one@stimulsoft.com';

$args->settings->bcc[] = 'hidden_recipient_one@stimulsoft.com';

$args->settings->bcc[] = 'hidden_recipient_two@stimulsoft.com John Smith';

 

return StiResult::getSuccess('The Email has been sent successfully.');

};

 

 

 

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

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

 

viewer.php

 

<?php

use Stimulsoft\Viewer\StiViewer;

 

$viewer = new StiViewer();

$viewer->options->toolbar->showSendEmailButton = true;

$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';

?>