[ELMA3] Отправка электронной почты контакту контрагента
В данной статье приводится пример сценария отправки электронной почты через встроенный сервис ELMA (добавлен начиная с версии 3.2.6) из бизнес-процесса контактам выбранного контрагента.
Контекстные переменные:
- context.Klient – переменная Клиент типа Контрагент;
- context.prop_att – переменная Вложения типа Вложение, с типом связи Список, позволяющей прикреплять к отправляемому сообщению несколько файлов;
- context.Comment – переменная Комментарий типа Текст.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA с 3.8 включительно до 3.12.1 включительно.
Пространства имен:
1 2 3 | using EleWise.ELMA.API; using EleWise.ELMA.Messaging.Email; using System.Net.Mail; |
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | string mailto; //Добавление файлов во вложение var ft = new List<MailMessageFile>(); foreach (var newatt in context.prop_att.ToList()) { var ft2 = new MailMessageFile(); ft2.FileBody = System.IO.File.ReadAllBytes(newatt.File.ContentFilePath); ft2.FileName = newatt.File.Name; ft.Add(ft2); } //получение контактов клиента var knt = context.Klient.Contacts.ToList(); foreach (var i in knt) { mailto = i.Email.First().ToString(); //получаем email контакта //Авторизация на SMTP сервере if (mailto != null ) { var smtp_st = new SmtpSettings( "mail.elewise.com" , 25, "login" , "password" ); //Указываем параметры почтового сервера и данные пользователя для авторизации var msg = new MailMessage( "from@mail.com" , mailto, "Тема письма" , "Тело сообщения" ); //Формирование письма, указываем адрес отправителя, адрес получателя, тему и тело сообщения PublicAPI.Services.Email.SendMessage(smtp_st, msg, ft); // Отправка сообщения с использованием параметров почтового сервера,указанных в smtp_st //PublicAPI.Services.Email.SendMessage(msg, ft, null); // Отправка сообщения (может использоваться вместо строки 43). В данном случае настройки отправки сообщения будут использованы из настроек исходящей почты в разделе Администрирование – Настройки системы – Настройки исходящей почты // При использовании данного метода необходимо закомментировать строки 39 и 43 } else { context.Comment += "Электронный адрес контакта " + i.Name + " не указан, сообщение отправлено не было\n" ; } } |
Пример сценария без использования PublicAPI
Пространства имен:
1 2 3 4 5 6 7 | using System.Net; using System.Net.Mail; using System.Net.Mime; using EleWise.ELMA.Messaging.Email; using EleWise.ELMA.Services; using System.Web.Mvc; using EleWise.ELMA.CRM; |
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | string mailto; var emailSender = Locator.GetService<EmailSender>(); //Добавление файлов во вложение var ft = new List<MailMessageFile>(); foreach (var newatt in context.prop_att.ToList()) { var ft2 = new MailMessageFile(); ft2.FileBody = System.IO.File.ReadAllBytes(newatt.File.ContentFilePath); ft2.FileName = newatt.File.Name; ft.Add(ft2); } //получение контактов клиента var knt = context.Klient.Contacts.ToList(); foreach (var i in knt) { mailto = i.Email.First().ToString(); //получаем email контакта //Авторизация на SMTP сервере if (mailto != null ) { var smtp_st = new SmtpSettings( "mail.elewise.com" , 25, "login" , "password" ); //Указываем параметры почтового сервера и данные пользователя для авторизации var msg = new MailMessage( "from@mail.com" , mailto, "Тема письма" , "Тело сообщения" ); //Формирование письма, указываем адрес отправителя, адрес получателя, тему и тело сообщения emailSender.SendMessage(smtp_st, msg, ft); // Отправка сообщения с использованием параметров почтового сервера,указанных в smtp_st //emailSender.SendMessage(msg, ft); // Отправка сообщения (может использоваться вместо строки 43). В данном случае настройки отправки сообщения будут использованы из настроек исходящей почты в разделе Администрирование – Настройки системы – Настройки исходящей почты // При использовании данного метода необходимо закомментировать строки 39 и 43 } else { context.Comment += "Электронный адрес контакта " + i.Name + " не указан, сообщение отправлено не было\n" ; } } |
Также возможен вариант использования SmtpSettings без аутентификации (если сервер позволяет отправку почты без аутентификации). В данном случае указывается только адрес сервера и порт для отправки сообщений:
1 | var smtp_st = new SmtpSettings( "mail.elewise.com" , 25); |