[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);