logo

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