logo

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