Удалить запрос на встречу в С#

Я создаю приложение на С#. В этом случае я могу создать запрос на собрание, который отправляется пользователю через код и отображается в почте Outlook.

Ниже приведен код, который я использую для отправки приглашения на собрание. Он работает нормально.

StringBuilder OutlookBody = new StringBuilder();
string textvs = @"BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
LOCATION:" + Location + @"
DTSTART:" + string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start) + @"
DTEND:" + string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end) + @"
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:= " + OutlookBody + @"=0D=0A SUMMARY:" + AppoitmentName + @"
PRIORITY:3
END:VEVENT
END:VCALENDAR";

Как я могу использовать тот же код для удаления запроса на встречу в Outlook.

Я также проверил этот ответ, но это не решило мою проблему.

Ответ 1

В OutLook каждая встреча/встреча получит уникальный идентификатор и ChangeKey. Новый ChangeKey генерируется всякий раз, когда есть изменения, внесенные в собрание. Чтобы обновить существующую встречу, вы должны иметь идентификатор и последний ChangeKey.

В вашем подходе, если я не ошибаюсь, вы просто строите ICAL, который добавляется в Outlook через электронную почту. В этом случае у вас не будет Id и ChangeKey, чтобы изменить собрание программно. Я предпочел бы вам изменить подход.

Если у вас есть Microsoft Exchange, будут указаны следующие ссылки. Else, игнорируйте ссылки.

https://msdn.microsoft.com/en-us/library/office/dn495611(v=exchg.150).aspx https://msdn.microsoft.com/en-us/library/office/dn495612(v=exchg.150).aspx

Ответ 2

Вы можете установить метод и статус собрания, добавив следующие строки:

METHOD: CANCEL

STATUS: CANCELLED

Подробнее здесь.

Ответ 3

Используйте следующий код

StringBuilder OutlookBody = new StringBuilder();
string textvs = @"BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN
VERSION:1.0
BEGIN:VEVENT
LOCATION:" + Location + @"
DTSTART:" + string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start) + @"
DTEND:" + string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end) + @"
DESCRIPTION;ENCODING=QUOTED-PRINTABLE:= " + OutlookBody + @"=0D=0A SUMMARY:" + AppoitmentName + @"
PRIORITY:3
METHOD:CANCEL
STATUS:CANCELLED
END:VEVENT
END:VCALENDAR";

И используйте следующий тип Mime

System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType("text/calendar; method=CANCEL");

AlternateView alternate = AlternateView.CreateAlternateViewFromString(body, mimeType);
message.AlternateViews.Add(alternate);