Отправить запрос на собрание в почтовый ящик комнаты Exchange Online

Я работаю над проектом C# WebApi, который требует резервирования почтовых ящиков комнаты Exchange Online без взаимодействия с пользователем.

Я заметил, что когда вы создаете новое событие календаря в Office 365, он отправляет сообщения с файлами .ICS в неизвестные домены, но для любого адреса электронной почты Outlook он отправляет сообщение без вложения, которое в любом случае распознается как приглашение на мероприятие. Он также отправляет приглашения в почтовые ящики комнат, если вы указываете расположение, и Exchange автоматически принимает их, если нет конфликтов. Мне нужно воспроизвести то же поведение с помощью SMTP в C#.

Я попытался отправить файл ICS как вложение в почтовый ящик комнаты, но сообщение просто игнорируется. Похоже, что Exchange не распознает эти файлы как запросы событий. Если я открою почтовый ящик комнаты, не будет никаких кнопок для принятия или отклонения приглашения, но я вижу вложение и могу выбрать «Добавить в календарь». Мне нужно, чтобы Exchange автоматически принимал запрос.

Проведя небольшое исследование, я нашел несколько способов планировать встречи на C#. Один из них использует управляемый API веб-служб Exchange, но я слышал, что через пару лет он устареет, поэтому я не могу его использовать. Есть и другие варианты, такие как использование Graph, но они имеют сложную систему аутентификации, которая требует взаимодействия с пользователем для установки учетных данных. Мне нужно сделать это, если возможно, используя SMTP или какой-либо другой метод с простой аутентификацией по имени пользователя и паролю.

Кто-нибудь знает, почему Exchange не распознает файлы ICS и есть ли другой способ сделать это с помощью SMTP?

Обновлено: решено. Это готовый код на C#, если кому интересно:

var calendarBytes = Encoding.UTF8.GetBytes(sb.ToString());
MemoryStream ms = new MemoryStream(calendarBytes);
var ct = new ContentType() { MediaType = "text/calendar", CharSet = "utf-8" , Name = "Part_3.ics" };
ct.Parameters.Add("method", "REQUEST");
Attachment attachment = new Attachment(ms, ct);
attachment.ContentDisposition.DispositionType = DispositionTypeNames.Attachment;
attachment.ContentDisposition.FileName = "Part_3.ics";
message.Attachments.Add(attachment);

Вы включали данные ICS как text/calendar? См. stackoverflow.com/a/462096/3608792

Dan Wilson 26.09.2018 23:04

Да, это было включено, но чего-то не хватало в шапке. Алина решила это ниже.

Mario Zelarayán 27.09.2018 15:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
625
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Exchange может распознавать файлы ICS, вы могли пропустить метод iTIP, как в типе содержимого:

Content – Type: text/plain; charset=”utf-8”; method=REQUEST
name=myCalendar.ics 
Content-Disposition: attachment; 
filename=myCalendar.ics

Вы можете сослаться на эту ссылку:

Составное электронное письмо с текстом и календарем: Outlook не распознает ICS

Вот и все! В шапке чего-то не хватало. Спасибо! Я обновил вопрос готовым фрагментом кода.

Mario Zelarayán 27.09.2018 15:18

Другие вопросы по теме