Отправка электронных писем с помощью 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 почта

См. также

SALE! 50%

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

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

4800 2400 руб.

07.04.2014    86976    56    199    

141

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

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

4800 руб.

25.11.2020    25923    276    9    

238

SALE! 15%

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

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

5280 4488 руб.

30.06.2022    12240    82    104    

44

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

Обработки предназначены для массового создания актов сверки и отправки их по электронной почте для конфигураций Управление торговлей 10.3. и Бухгалтерия предприятия 3.0. Для Бухгалтерии 3.0 Разработка велась на 1С:Предприятие 8.3 (8.3.15.1830). проверялась на Бухгалтерия предприятия 3.0 (3.0.71.83) и 3.0.76.77 Для Управление торговлей 10.3 Разработка велась на 1С:Предприятие 8.3 релиз конфигурации (10.3.61.2) . РАБОТАЕТ НА БАЗОВЫХ и ПРОФ. ВЕРСИЯХ.

2520 руб.

24.04.2020    32474    127    66    

104

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

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

12000 руб.

16.04.2014    86226    101    91    

96

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

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

6000 руб.

13.01.2022    11380    9    13    

15

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

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

7080 руб.

11.05.2021    10227    8    2    

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