Отправка email-сообщения с существующей учетной записи
Glossary Item Box
Общие сведения
Возможность отправки email-сообщений с существующей учетной записи доступна в Creatio версии 7.16 и выше.
В Сreatio вы можете отправлять email-сообщения не только пользовательскими средствами, но и средствами разработки. Это реализуется следующими способами:
- С существующей учетной записи.
- С явным указанием учетных данных.
В этой статье рассмотрен способ отправки email-сообщения с существующей учетной записи. Как отправить письмо с явным указанием данных, читайте в статье "Отправка email-сообщения с явным указанием учетных данных".
Отправка email-сообщения с существующей учетной записи реализована с помощью бизнес-процесса. Для настройки бизнес-процесса используются элементы [Автогенерируемая страница] ([Auto-generated page]) и [Задание-сценарий] ([Script task]).
Подготовка и отправка email-сообщения
Для отправки email-сообщения с существующей учетной записи необходимо выполнить следующие действия:
- Создать бизнес-процесс, который должен включать обязательные элементы [Автогенерируемая страница] и [Задание-сценарий].
- Создать конфиг отправляемого email-сообщения.
- Добавить вложение (не обязательно).
- Запустить бизнес-процесс для выполнения отправки.
Создание конфига отправляемого email-сообщения
Для создания конфига отправляемого email-сообщения необходимо использовать класс Terrasoft.Mail.Sender.EmailMessage. Для формирования валидного email-сообщения необходимо заполнить следующие параметры:
var message = new Terrasoft.Mail.Sender.EmailMessage { // Email-адрес отправителя. From = "Sender@email.com", // Email-адреса получателей. To = List<string>{ "first@recepient.co", "second@recepient.co"}, // Копия (не обязательно). Cc = List<string>{ "first@recepient.co", "second@recepient.co"}, // Скрытая копия (не обязательно). Bcc = List<string>{ "first@recepient.co", "second@recepient.co"}, // Тема письма. Subject = "Message subject", // Тело письма. Body = "Body", // Приоритет, значения из перечисления Terrasoft.Mail.Sender.EmailPriority. Priority = Terrasoft.Mail.Sender.EmailPriority.Normal };
Добавление вложения (не обязательно)
В email-сообщение можно добавить вложение. Для этого необходимо заполнить поле [Attachments]. Вложения представляют собой список экземпляров Terrasoft.Mail.Sender.EmailAttachments.
// Создание вложения. var attachment = new Terrasoft.Mail.Sender.EmailAttachment { // Идентификатор вложения. Id = new Guid("844F0837-EAA0-4F40-B965-71F5DB9EAE6E"), // Имя вложения. Name = "attachName.txt", // Данные. Data = byteData }; // Добавление вложения в письмо. message.Attachments.Add(attachment);
Отправка email-сообщения
Для отправки письма необходимо использовать метод Send класса EmailSender c переданными параметрами email-сообщения и конфига подключения:
// Отправка сформированного email-сообщения. Для игнорирования прав доступа при отправке
// требуется присвоить параметру ignoreRights значение true.
emailSender.Send(message, ignoreRights);
Описание примера
Создайте бизнес-процесс в ходе которого будет открываться страница, содержащая параметры email-сообщения для заполнения и дальнейшей отправки email-сообщения с существующей учетной записи.
Исходный код
Пакет с реализацией примера можно скачать по ссылке.
Алгоритм реализации примера
1. Создайте бизнес-процесс
В разделе [Конфигурация] ([Configuration]) выполните действие [Добавить] —> [Бизнес-процесс] ([Add] —> [Business process]) (рис. 1).
Рис. 1. — Действие [Добавить] —> [Бизнес-процесс]
В открывшемся дизайнере процессов установите следующие значения на панели настройки свойств процесса (рис. 2):
- [Заголовок] ([Title]) — "Sending emails from existing account".
- [Код] ([Code]) — "UsrSendEmailFromExistingUserProcess".
Рис. 2. — Свойства бизнес-процесса
2. Добавьте элемент [Автогенерируемая страница]
С помощью элемента [Автогенерируемая страница] ([Auto-generated page]) в ходе выполнения процесса можно открыть произвольную страницу, которая создана пользователем системы. Для этого элемента добавьте подпись [Filling parameters] и установите следующие свойства (рис. 3):
- [Название страницы] ([Page title]) — "Fill parameters for sending Email".
- [Кому отобразить страницу?] ([To whom should the page be shown?]) — выберите "Formula" и установите [#System variable.Current user contact#].
Рис. 3. — Свойства автогенерируемой страницы
3. Добавьте кнопку на страницу
Для добавления кнопки [Continue] на страницу в блоке [Кнопки] ([Buttons]) нажмите и введите следующие параметры (рис. 4):
- [Название] ([Caption]) — "Continue".
- [Код] ([Code]) — "ContinueButton".
- [Стиль] ([Style]) — выберите "Green".
- Установите признак [Активная] ([Active]).
- Установите признак [Выполняет проверку значений] ([Performs value validation]).
Рис. 4. — Добавление кнопки на автогенерируемую страницу
Нажмите [Сохранить] ([Save]).
4. Добавьте элементы на страницу
Для добавления на страницу элемента, который будет содержать почтовый ящик отправителя email-сообщения, в блоке [Параметры страницы] ([Page Items]) нажмите , выберите тип [Справочник] ([Selection field]) и введите следующие параметры (рис. 5):
- [Заголовок] ([Title]) — "Sender Mailbox".
- [Код] ([Code]) — "SenderMailbox".
- [Источник данных] ([Data source]) — выберите "Mailbox synchronization settings".
- [Представление] ([View]) — выберите "Drop down list".
Рис. 5. — Добавление элемента на автогенерируемую страницу
Нажмите [Сохранить] ([Save]).
Для добавления на страницу элемента, который будет содержать почтовый ящик получателя email-сообщения, в блоке [Параметры страницы] ([Page Items]) нажмите , выберите тип [Строковое поле] ([Text field]) и введите следующие параметры (рис. 6):
- [Заголовок] ([Title]) — "Recipient (many recipients separated by semicolon ";")".
- [Код] ([Code]) — "Recipient".
- Установите признак [Обязательное] ([Required]).
Рис. 6. — Добавление элемента на автогенерируемую страницу
Нажмите [Сохранить] ([Save]).
Для добавления на страницу элемента, который будет содержать тему email-сообщения, в блоке [Параметры страницы] ([Page Items]) нажмите , выберите тип [Строковое поле] ([Text field]) и введите следующие параметры (рис. 7):
- [Заголовок] ([Title]) — "Subject".
- [Код] ([Code]) — "Subject".
- Установите признак [Обязательное] ([Required]).
Рис. 7. — Добавление элемента на автогенерируемую страницу
Нажмите [Сохранить] ([Save]).
Для добавления на страницу элемента, который будет содержать тело email-сообщения, в блоке [Параметры страницы] ([Page Items]) нажмите , выберите тип [Строковое поле] ([Text field]) и введите следующие параметры (рис. 8):
- [Заголовок] ([Title]) — "Body".
- [Код] ([Code]) — "Body".
- Установите признак [Обязательное] ([Required]).
Рис. 8. — Добавление элемента на автогенерируемую страницу
Нажмите [Сохранить] ([Save]).
5. Добавьте элемент [Задание-сценарий]
Свойству [Заголовок] ([Title]) элемента [Задание-сценарий] ([Script task]) присвойте значение "Send Email". Элемент должен выполнять следующий программный код:
// Id выбранного почтового ящика. var mailBoxSettingId = Get<Guid>("SenderMailbox"); // Создание экземпляра EmailClientFactory. var emailClientFactory = ClassFactory.Get<IEmailClientFactory>( new ConstructorArgument("userConnection", UserConnection)); // Создание экземпляра IEmailSender. var emailSender = ClassFactory.Get<IEmailSender>( new ConstructorArgument("emailClientFactory", emailClientFactory), new ConstructorArgument("userConnection", UserConnection)); var entity = UserConnection.EntitySchemaManager.GetInstanceByName("MailboxSyncSettings").CreateEntity(UserConnection); if (entity.FetchFromDB("Id", mailBoxSettingId, new List<string> { "SenderEmailAddress" })) { // Получение почтового адреса отправителя из выбранного почтового ящика. var senderEmailAddress = entity.GetTypedColumnValue<string>("SenderEmailAddress"); // Заполнение параметров отправляемого сообщения. var message = new Terrasoft.Mail.Sender.EmailMessage { // Email-адрес отправителя. From = senderEmailAddress, // Email-адреса получателей. To = Get<string>("Recipient").Split(';').ToList<string>(), // Копия (не обязательно). // Cc = List<string>{ "first@recepient.co", "second@recepient.co"}, // Скрытая копия (не обязательно). // Bcc = List<string>{ "first@recepient.co", "second@recepient.co"}, // Тема письма. Subject = Get<string>("Subject"), // Тело письма. Body = Get<string>("Body"), // Приоритет, значения из перечисления Terrasoft.Mail.Sender.EmailPriority. Priority = Terrasoft.Mail.Sender.EmailPriority.Normal }; // Дополнительно можно прикреплять вложения (в примере используются тестовые значения). // Создание вложения. var attachment = new Terrasoft.Mail.Sender.EmailAttachment { // Идентификатор вложения. Id = Guid.NewGuid(), // Название файла. Name = "test.txt", // Данные. Data = Encoding.ASCII.GetBytes("some test text") }; // Добавление вложения в письмо. message.Attachments.Add(attachment); // Отправка письма. emailSender.Send(message); } return true;
6. Добавьте параметры
Для добавления параметра бизнес-процесса, который будет содержать почтовый ящик получателя email-сообщения, на вкладке [Параметры] ([Parameters]) панели настройки свойств процесса выполните действие [Добавить параметр] —> [Текст] ([Add parameters] —> [Text]) и установите следующие свойства параметра (рис. 9):
- [Заголовок] ([Title]) — "Recipient".
- [Код] ([Code]) — "Recipient".
- [Значение] ([Value]) — нажмите —> [Параметр процесса] ([Process parameter]) и выберите элемент процесса "Recipient (many recipients separated by semicolon ";")".
Рис. 9. — Добавление параметра процесса
Нажмите [Сохранить] ([Save]).
Для добавления параметра бизнес-процесса, который будет содержать тему email-сообщения, на вкладке [Параметры] ([Parameters]) панели настройки свойств процесса выполните действие [Добавить параметр] —> [Текст] ([Add parameters] —> [Text]) и установите следующие свойства параметра (рис. 10):
- [Заголовок] ([Title]) — "Subject".
- [Код] ([Code]) — "Subject".
- [Значение] ([Value]) — нажмите —> [Параметр процесса] ([Process parameter]) и выберите элемент процесса "Subject".
Рис. 10. — Добавление параметра процесса
Нажмите [Сохранить] ([Save]).
Для добавления параметра бизнес-процесса, который будет содержать тело email-сообщения, на вкладке [Параметры] ([Parameters]) панели настройки свойств процесса выполните действие [Добавить параметр] —> [Текст] ([Add parameters] —> [Text]) и установите следующие свойства параметра (рис. 11):
- [Заголовок] ([Title]) — "Body".
- [Код] ([Code]) — "Body".
- [Значение] ([Value]) — нажмите —> [Параметр процесса] ([Process parameter]) и выберите элемент процесса "Body".
Рис. 11. — Добавление параметра процесса
Нажмите [Сохранить] ([Save]).
Для добавления параметра бизнес-процесса, который будет содержать почтовый ящик отправителя email-сообщения, на вкладке [Параметры] ([Parameters]) панели настройки свойств процесса выполните действие [Добавить параметр] —> [Другое] —> [Уникальный идентификатор] ([Add parameters] —> [Other] —> [Unique identifier]) и установите следующие свойства параметра (рис. 12):
- [Заголовок] ([Title]) — "Sender Mailbox".
- [Код] ([Code]) — "SenderMailbox".
- [Значение] ([Value]) — нажмите —> [Параметр процесса] ([Process parameter]) и выберите элемент процесса "Sender Mailbox".
Рис. 12. — Добавление параметра процесса
Нажмите [Сохранить] ([Save]).
7. Добавьте методы
Для добавления методов бизнес-процесса на вкладке [Методы] ([Methods]) панели настройки свойств процесса в блоке [Usings] нажмите и в поле [Пространство имён] ([Name Space]) добавьте значение Terrasoft.Configuration. Нажмите [Сохранить] ([Save]).
Таким же способом добавьте следующие пространства имен:
- Terrasoft.Mail.Sender
- Terrasoft.Core.Factories
- Terrasoft.Core
- Terrasoft.Mail
- IntegrationApi
- System.Linq
Сохраните все изменения в дизайнере процессов.
8. Запустите бизнес-процесс
Для успешного запуска бизнес-процесса необходимо предварительно добавить учетную запись отправителя в приложение Creatio. Подробнее о добавлении учетной записи читайте в блоке статей "Интеграция с сервисом MS Exchange".
После запуска бизнес-процесса по кнопке [Запустить] ([Run]) будет открыта страница для заполнения параметров email-сообщения (рис. 13).
Рис. 13. — Страница для отправки email-сообщения
Для отправки email-сообщения с существующей учетной записи нажмите [Continue].