2017-01-25 11 views
11

Tworzę aplikację w języku C#. W ten sposób mogę utworzyć wezwanie na spotkanie, które jest wysyłane do użytkownika za pomocą kodu i pojawia się w poczcie Outlook.Usuń żądanie spotkania programu Outlook w języku C#

Poniższy kod służy do wysyłania zaproszenia na spotkanie. Działa dobrze.

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"; 

W jaki sposób mogę użyć tego samego kodu do usunięcia żądania spotkania Outlook.

Sprawdziłem również odpowiedź this, ale to nie rozwiązało mojego problemu.

+0

proszę określić przyczynę downvoting tak, że można go zmodyfikować. @downvoter –

+0

Nie jestem downvoter, ale czy możesz nam powiedzieć, dlaczego odpowiedź, o której wspomniałeś, nie pomogła? wygląda na to, że było dokładnie na miejscu. nie można uzyskać wymuszonego usunięcia, zawsze jest to kolejna wiadomość, którą odbiorca zobaczy jako powiadomienie typu "spotkanie anulowane - usunięcie z kalendarza?" – dlatikay

+0

@dlatikay: Ten kod działa poprawnie, wysyłając żądanie spotkania Outlook. Chcę wysłać anulowanie spotkania programu Outlook, modyfikując ten kod, może to być status dodawania anulowany. Nie wiem, co dokładnie robić. –

Odpowiedz

2

W OutLook każde spotkanie/spotkanie otrzyma unikalny identyfikator i klucz zmiany. Nowy klucz ChangeKey jest generowany za każdym razem, gdy wprowadzana jest modyfikacja spotkania. Aby zaktualizować istniejące spotkanie, musisz mieć identyfikator i najnowszy klucz zmiany.

W swoim podejściu, jeśli się nie mylę, po prostu tworzysz ICAL, który jest dodawany do programu pocztą e-mail. W takim przypadku nie będziesz miał identyfikatora i klawisza ChangeKey do modyfikowania spotkania programowo. Proponuję raczej zmianę podejścia.

Jeśli posiadasz Microsoft Exchange, poniższe linki poprowadzą Cię. W przeciwnym razie zignoruj ​​linki.

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

Można ustawić metodę i stan spotkania dodając te wiersze:

METHOD: CANCEL 

STATUS: CANCELLED 

Zobacz więcej here.

+0

Próbowałem tego, ale to nie działa. –

0

Użyj następującego kodu

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"; 

I użyć następującego typu 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); 
+0

Sardanna Gdzie powinienem zdefiniować ten mimeType i jaki jest tego pożytek. –

+0

Zaktualizowałem odpowiedź również, jeśli kod w komentarzu jest niejasny, aby dowiedzieć się, w jaki sposób można określić rodzaj Mime. –

Powiązane problemy