Отправка электронных писем с помощью Exchange Web Services (EWS) и авторизацией Active Directory (AD)

30.01.20

Интеграция - Email рассылки

В данной публикации показан пример отправки электронного письма из 1С с использованием Exchange Web Services (EWS) и авторизацией Active Directory (AD).

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Отправка электронных писем с помощью Exchange Web Services (EWS) и авторизацией Active Directory (AD):
.epf 7,46Kb
28 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Exchange Web Services (EWS) — это специальный протокол, разработанный MS, и предназначенный для управления почтой и другими компонентами составляющими MS Exchange. В основе протокола лежит XML.

Для того чтобы отправить письмо с помощью Exchange Web Services (EWS), я использовал "HTTPСоединение" с установленным признаком "ИспользоватьАутентификациюОС".

 
 Собственно сам пример (думаю комментарии в листинге все объясняют):

 

&НаКлиенте
Процедура ОтправитьПисьмо(Команда)
	
	ТекстHTML = "<?xml version=""1.0"" encoding=""utf-8""?>
	|<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
	|               xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""
	|               xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types""
	|               xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
	|  <soap:Header>
	|    <t:RequestServerVersion Version=""Exchange2010_SP2"" />
	|  </soap:Header>
	|  <soap:Body>
	|    <m:CreateItem MessageDisposition="""+?(СохранитьВЧерновик,"SaveOnly","SendAndSaveCopy")+""">
	|      <m:SavedItemFolderId>
	|        <t:DistinguishedFolderId Id="""+?(СохранитьВЧерновик,"drafts","sentitems")+""" />
	|      </m:SavedItemFolderId>
	|      <m:Items>
	|        <t:Message>
	|          <t:Subject>"+Тема+"</t:Subject>
	|          <t:Body BodyType=""HTML"">"+Текст+"</t:Body> 
	// ВЛОЖЕНИЕ
	|<t:Attachments>
	|  <t:FileAttachment>
	|    <t:Name>FileAttachment.txt</t:Name>
	|    <t:IsInline>false</t:IsInline>
	|    <t:IsContactPhoto>false</t:IsContactPhoto>
	|    <t:Content>VGhpcyBpcyBhIGZpbGUgYXR0YWNobWVudC4=</t:Content>
	|  </t:FileAttachment>
	|</t:Attachments>
	// --- КОНЕЦ ВЛОЖЕНИЯ	  
	|          <t:ToRecipients>
	|            <t:Mailbox>
	|              <t:EmailAddress>"+ПолучательПисьма+"</t:EmailAddress>
	|            </t:Mailbox>
	// ЕЩЕ ОДИН ПОЛУЧАТЕЛЬ
	//|            <t:Mailbox>
	//|              <t:EmailAddress>"+ПолучательПисьма+"</t:EmailAddress>
	//|            </t:Mailbox>
	// -- КОНЕЦ ПОЛУЧАТЕЛИ
	|          </t:ToRecipients>
	|        </t:Message>
	|      </m:Items>
	|    </m:CreateItem>
	|  </soap:Body>
	|</soap:Envelope>";
	
	Защищенное = Новый ЗащищенноеСоединениеOpenSSL();
	Соединение = Новый HTTPСоединение(АдресПочтовогоСервера,,,,,,Защищенное,Истина);
	
	Заголовки = Новый Соответствие();
	Заголовки.Вставить("Content-Type", "text/xml");    
	
	ЗапросHTTP = Новый HTTPЗапрос(ПутьКВебСервисуEWS,Заголовки);
	ЗапросHTTP.УстановитьТелоИзСтроки(ТекстHTML,КодировкаТекста.UTF8);

	Результат = Соединение.ОтправитьДляОбработки(ЗапросHTTP);

	ОтветЗапроса = Результат.ПолучитьТелоКакСтроку();
	
КонецПроцедуры

 

Пояснение к переменным:

СохранитьВЧерновик = Ложь; // Булево, определяем что делать с письмом (отправлять или сохранить в черновик)
Тема = "Тема письма"; // Тема письма
Текст = "Текст письма"; // Текст электронного письма
ПолучательПисьма = "test@test.ru"; // электронный адрес получателя
АдресПочтовогоСервера = "test.com"; // Адрес почтового сервера
ПутьКВебСервисуEWS = "/EWS/Exchange.asmx"; // путь к веб сервису (обычно он всегда именно такой как в примере)

 

Тестировалось на платформе 1С:Предприятие 8.3 (8.3.13.1644)

 

 

Вступайте в нашу телеграмм-группу Инфостарт

Обработка Почта Письмо EWS AD Exchange Web Services Active Directory Электронное сообщение email пример веб сервис MS почта

См. также

SALE! 50%

Мессенджеры и боты SMS рассылки Email рассылки Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Расширение 1С с полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, WhatsApp, Telegram. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

6000 3000 руб.

07.04.2014    91781    71    200    

152

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Внешняя обработка для Бухгалтерии 3.0 - позволяет автоматически формировать документы «Акт сверки расчетов» с контрагентами за выбранный период с последующей фоновой отправкой на почту контрагента.

5000 руб.

25.11.2020    28274    311    9    

269

SALE! 50%

Взаиморасчеты SMS рассылки Email рассылки Создание на основании Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение Директ Маркетинг для 1С:Бухгалтерия с триггерами и роботами для автоматического создания документов, полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, WhatsApp, Telegram.

6000 3000 руб.

15.04.2025    2656    11    9    

12

Email рассылки Оптовая торговля Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием Управленческий учет Платные (руб)

Многим сотрудникам предприятия требуется актуальная и достоверная информация для принятия верных управленческих решений. Получить данную информацию можно при помощи отчетов, существующих в конфигурации «1С: Управление торговлей 10.3» или «1С:УПП». Но не всегда у пользователей есть время, возможность и/или желание формировать отчеты непосредственно в системе. Намного привычней и удобней получать готовые отчеты на электронную почту, не открывая 1С.

12000 руб.

16.04.2014    87358    103    91    

98

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Создать и отправить 1000 Актов серки контрагентам за 5 мин?! Легко! Разработано для конфигурации 1C:УНФ. Массовое создание и рассылка Актов сверки в три клика.

6000 руб.

13.01.2022    12778    16    13    

22

Мессенджеры и боты SMS рассылки Email рассылки 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Общение с клиентами несколькими операторами 1С с одного или нескольких аккаунтов WhatsApp в вашей базе 1С. Рассылки, чат-боты, сценарии. Работает как самостоятельное решение, так и в составе других конфигураций 1С 8.3. Неограниченное количество операторов и аккаунтов WhatsApp и Телеграм в 1С.

4680 руб.

08.04.2020    54677    118    0    

137

Email рассылки Взаиморасчеты Акт сверки Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Данная обработка позволяет сократить объем ручных операций, выполняемых ежемесячно бухгалтером или его помощником за счет автоматизации систематического процесса.

7800 руб.

12.02.2019    35828    29    24    

28
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ZLENKO 398 30.01.20 14:56 Сейчас в теме
А получать письма таким образом можно?
2. Isonic 244 30.01.20 15:41 Сейчас в теме
3. bussiness_hacker 23.11.20 14:04 Сейчас в теме
4. mikukrnet 182 10.09.21 11:51 Сейчас в теме
Подскажите, как отправлять Текст в формате HTML?

На таком тексте письма сразу ошибка

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="format-detection" content="telephone=no" />

</head>
<body>
<p>Сформированы отчеты: АнализМаршрутов

</body>
</html>
Показать
5. mikukrnet 182 10.09.21 11:57 Сейчас в теме
(4) Нашел, применяем функцию к тексту письма

 Функция Escape(ИсходнаяСтрока)
	
	Перем Результат; //:Строка 
	
	Результат = СтрЗаменить(ИсходнаяСтрока, "&", "&");
	Результат = СтрЗаменить(Результат, """", """);
	Результат = СтрЗаменить(Результат, "<", "<");
	Результат = СтрЗаменить(Результат, ">", ">");
	Результат = СтрЗаменить(Результат, "'", "'");
	
	Возврат Результат;
	
 КонецФункции // Escape
Показать
6. Isonic 244 13.09.21 08:50 Сейчас в теме
(5) я делал так
Прикрепленные файлы:
7. user635629_exter 39 03.07.24 06:17 Сейчас в теме
Привет, всем.
Подскажите, пожалуйста, а как отправить письмо "send as" от "shared mailbox".
Авторизация доменная "Соединение = Новый HTTPСоединение(АдресПочтовогоСервера,,,,,,Защищенное,Истина);", а куда дальше копать не очень понятно. Понятно, что нужно что-то в заголовки запросаhttp добавить или в header самого soap-конверта, но вот что именно :)

Гугл внятного ответа не дает почему-то.
Максимум что нашел

| <soap:Header>
| <t:ExchangeImpersonation>
| <t:ConnectingSID>
или | <t:PrincipalName>email@exch.ru</t:PrincipalName>
или | <t:PrimarySmtpAddress>email@exch.ru</t:PrimarySmtpAddress>
| </t:ConnectingSID>
| </t:ExchangeImpersonation>
| </soap:Header>

Может кто сталкивался ?
8. user635629_exter 39 03.07.24 07:47 Сейчас в теме
(7)
Получилось по аналогии и из этой доки https://learn.microsoft.com/ru-ru/exchange/client-developer/exchange-web-services/email-properties-and-elements-in-ews-in-exchange

// ОТПРАВИТЕЛЬ
| <t:From>
| <t:Mailbox>
| <t:EmailAddress>"+ОтправительПисьма+"</t:EmailAddress>
| </t:Mailbox>
| </t:From>
9. user635629_exter 39 03.07.24 10:09 Сейчас в теме
Еще подскажите, пожалуйста, как оформить DisplayName отправителя. В доке не видно, и по аналогии не получается - система просто игнорирует мои атрибуты.

Пробовал так в разных вариантах:
| <t:From>
| <t:Mailbox>
| <t:EmailAddress>"+ОтправительПисьма+"</t:EmailAddress>
//| <t:EmailAddress><t:Address>"+ОтправительПисьма+"</t:Address></t:EmailAddress>
//| <t:Name>"+ОтправительПредставление+"</t:Name>
//| <t:EmailName>"+ОтправительПредставление+"</t:EmailName>
//| <t:DisplayName>"+ОтправительПредставление+"</t:DisplayName>
| </t:Mailbox>
| </t:From>
10. user635629_exter 39 03.07.24 10:54 Сейчас в теме
(9)
Админ сказал, что EXCH будет игнорировать представление (SimpleDisplayName) при отправке через EWS
и не будет игнорировать при отправке через smtp (через встроенный почтовый клиент 1с).

код примерно такой
| <t:Mailbox>
| <t:EmailAddress>"+ОтправительПисьма+"</t:EmailAddress>
| <t:SimpleDisplayName>"+ОтправительПредставление+"</t:SimpleDisplayName>
| </t:Mailbox>

ну и в доке EWS такого поля не объявлено, только поля Address,IsValid,RoutingType
https://learn.microsoft.com/ru-ru/dotnet/api/microsoft.exchange.webservices.data.mailbox?view=exchange-ews-api
11. user2112372 02.11.24 10:23 Сейчас в теме
Добрый день!
Уточните пожалуйста можно ли изменить тему письма?
12. user1865794 16.05.25 09:41 Сейчас в теме
Только вот свойство "ИспользоватьАутентификациюОС" у "HTTPСоединение" работает только на прокси сервер, на веб сервер не аутентифицироваться. Пришлось использовать WinHttp.
Для отправки сообщения требуется регистрация/авторизация