[ELMA3] Отправка электронной почты контакту контрагента
В данной статье приводится пример сценария отправки электронной почты через встроенный сервис ELMA (добавлен начиная с версии 3.2.6) из бизнес-процесса контактам выбранного контрагента.
Контекстные переменные:
- context.Klient – переменная Клиент типа Контрагент;
- context.prop_att – переменная Вложения типа Вложение, с типом связи Список, позволяющей прикреплять к отправляемому сообщению несколько файлов;
- context.Comment – переменная Комментарий типа Текст.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA с 3.8 включительно до 3.12.1 включительно.
Пространства имен:
using EleWise.ELMA.API; using EleWise.ELMA.Messaging.Email; using System.Net.Mail;
Текст сценария:
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
Пространства имен:
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;
Текст сценария:
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 без аутентификации (если сервер позволяет отправку почты без аутентификации). В данном случае указывается только адрес сервера и порт для отправки сообщений:
var smtp_st = new SmtpSettings("mail.elewise.com", 25);