Отправка email-сообщения с явным указанием учетных данных
Glossary Item Box
Общие сведения
В Сreatio вы можете отправлять email-сообщение не только пользовательскими средствами, но и средствами разработки. Это реализуется следующими способами
- С существующей учетной записи.
- С явным указанием учетных данных.
В данной статье рассмотрен способ отправки email-сообщения с явным указанием учетных данных. Описание отправки письма с существующей учетной записи читайте в статье "Отправка email-сообщения с существующей учетной записи".
Подготовка и отправка email-сообщения
Для отправки email-сообщения с явным указанием учетных необходимо выполнить следующие действия:
- Создать экземпляр класса EmailClientFactory.
- Создать экземпляр класса EmailSender.
- Создать конфиг подключения к почтовому ящику.
- Создать конфиг отправляемого email-сообщения.
- Добавить вложение (не обязательно).
- Выполнить отправку.
Создание экземпляра класса EmailClientFactory
Для создания экземпляра класса EmailClientFactory необходимо наличие пользовательского подключения UserConnection.
var emailClientFactory = ClassFactory.Get<IEmailClientFactory>( new ConstructorArgument("userConnection", UserConnection));
Создание экземпляра класса EmailSender
Для создания экземпляра класса EmailSender необходимо передать в конструктор созданный экземпляр EmailClientFactory и пользовательское подключение UserConnection.
var emailSender = ClassFactory.Get<IEmailSender>( new ConstructorArgument("emailClientFactory", emailClientFactory), new ConstructorArgument("userConnection", UserConnection));
Создание конфига подключения к почтовому ящику
Для создания конфига подключения к почтовому ящику используется класс EmailContract.DTO.Credentials. Чтобы создать конфиг, заполните следующие параметры:
var credentialConfig = new EmailContract.DTO.Credentials { // Имя или IP-адрес сервера исходящей почты. ServiceUrl = "mail service host", // Может быть пустым для некоторых протоколов. Port = "Port", // Использовать протокол SSL для шифрования подключения. UseSsl = false, // Имя пользователя почтового ящика. UserName = "EmailUserName", // Пароль пользователя почтового ящика. Password = "UserPassword", // Тип почтового сервера (Exchange либо Imap/Smtp). ServerTypeId = EmailDomain.IntegrationConsts.ExchangeMailServerTypeId || EmailDomain.IntegrationConsts.ImapMailServerTypeId, // Почтовый ящик отправителя. SenderEmailAddress = "sender@test.com" };
ВАЖНО
Значения ServiceUrl, UserName, Password, ServerTypeId, SenderEmailAddress являются обязательными для заполнения.
Создание конфига отправляемого email-сообщения
Для создания конфига отправляемого email-сообщения необходимо использовать класс EmailContract.DTO.Email. Для формирования валидного email-сообщения, заполните следующие основные параметры:
var message = new EmailContract.DTO.Email { // Email-адрес отправителя. Sender = "Sender@email.com", // Email-адреса получателей. Recepients = List<string>{ "first@recepient.co", "second@recepient.co"}, // Тема письма. Subject = "Message subject", // Тело письма. Body = "Body", // Приоритет, значения из перечисления EmailContract.EmailImportance. Importance = EmailContract.EmailImportance.High };
Добавление вложения (не обязательно)
Дополнительно в email-сообщение можно добавить вложение. Для этого требуется заполнить поле Attachments. Вложения представляют из себя список экземпляров EmailContract.DTO.Attachment.
// Создание вложения. var attachment = new EmailContract.DTO.Attachment { Name = "FileName", Id = "844F0837-EAA0-4F40-B965-71F5DB9EAE6E" }; // Установка данных для вложения. attachment.SetData(byteData); // Добавление вложения в письмо. message.Attachments.Add(attachment);
Отправка email-сообщения
Для отправки письма требуется использовать метод Send класса EmailSender c переданными аргументами email-сообщения и конфига подключения.
// Отправка сформированного email-сообщения с параметрами подключения к почтовому
// ящику отправителя. Для игнорирования прав доступа при отправке,
// требуется присвоить параметру ignoreRights значение true.
emailSender.Send(message, credentialConfig, ignoreRights);