Отправка электронных писем с помощью 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
26
26 Скачать (1 SM) Купить за 1 850 руб.

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 почта

См. также

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

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

3000 руб.

25.11.2020    24488    238    8    

205

SALE! 20%

Email рассылки Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Решение для массовой рассылки печатных форм (в том числе и дополнительных) любых документов, и произвольных файлов. Рассылка возможна посредством электронной почты, Telegram и файловой системы. Рассылка пакета документов. Добавление факсимильных печати и подписи. Произвольные шаблоны HTML/Simple text с автозаполнением любыми полями документа. Любые форматы файлов. Упаковка вложений в архив. Транслитерация имен файлов. Разбиение рассылки на произвольные порции. Обход спам-фильтров. Журналирование рассылок.

4920 3936 руб.

30.06.2022    11021    72    98    

34

Загрузка и выгрузка в Excel Монитор заказов Email рассылки Пользователь Бухгалтерский учет 8.3.14 1С:Бухгалтерия 3.0 Россия Управленческий учет Платные (руб)

Внешняя обработка, осуществляющая автоматическую загрузку новых (непрочитанных) писем, получаемых по электронной почте по расписанию и обрабатывающая вложенные файлы-заказы (в формате EXCEL) по заранее заданному шаблону заказа с различными уведомлениями обработки заказа.

6000 руб.

13.10.2021    10128    3    0    

3

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

Обработка позволяет автоматически сформировать акты сверок на почту контрагентов (почта берется из контактных данных контрагента). При формировании акта сверки формируется подпись с указанием контактов для связи с бухгалтерией нашей организации (формируется исходя из контактов из карточки организации). Присутствует возможность ручного редактирования электронной почты контрагента для отправки. Отправка осуществляется с системной записи электронной почты. В случае, если у контрагента нет адреса электронной почты, эти контрагенты будут выведены в отдельной табличной части. Это очень удобно, так как сразу наглядно виден список контрагентов, которым невозможно отправить акты сверок!

7080 руб.

11.05.2021    9468    6    1    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ZLENKO 398 30.01.20 14:56 Сейчас в теме
А получать письма таким образом можно?
2. Isonic 241 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 241 13.09.21 08:50 Сейчас в теме
(5) я делал так
Прикрепленные файлы:
7. user635629_exter 37 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 37 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 37 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 37 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 Сейчас в теме
Добрый день!
Уточните пожалуйста можно ли изменить тему письма?
Оставьте свое сообщение