2010-04-16 5 views
9

Я создаю приложение с использованием структуры ASP.NET MVC 1 на C#, где у меня есть пользователи, которые регистрируются для событий. После регистрации, я создаю запрос перспективы встречиОтменить запросы на встречу с Outlook MailSmessage в C#

public string BuildMeetingRequest(DateTime start, DateTime end, string attendees, string organizer, string subject, string description, string UID, string location) 
    { 
     System.Text.StringBuilder sw = new System.Text.StringBuilder(); 

     sw.AppendLine("BEGIN:VCALENDAR"); 
     sw.AppendLine("VERSION:2.0"); 
     sw.AppendLine("METHOD:REQUEST"); 
     sw.AppendLine("BEGIN:VEVENT"); 
     sw.AppendLine(attendees); 
     sw.AppendLine("CLASS:PUBLIC"); 
     sw.AppendLine(string.Format("CREATED:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow)); 
     sw.AppendLine("DESCRIPTION:" + description); 
     sw.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", end)); 
     sw.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow)); 
     sw.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}", start)); 
     sw.AppendLine("ORGANIZER;CN=\"NAME\":mailto:" + organizer); 
     sw.AppendLine("SEQUENCE:0"); 
     sw.AppendLine("UID:" + UID); 
     sw.AppendLine("LOCATION:" + location); 
     sw.AppendLine("SUMMARY;LANGUAGE=en-us:" + subject); 
     sw.AppendLine("BEGIN:VALARM"); 
     sw.AppendLine("TRIGGER:-PT720M"); 
     sw.AppendLine("ACTION:DISPLAY"); 
     sw.AppendLine("DESCRIPTION:Reminder"); 
     sw.AppendLine("END:VALARM"); 
     sw.AppendLine("END:VEVENT"); 
     sw.AppendLine("END:VCALENDAR"); 

     return sw.ToString(); 
    } 

И однажды построили, я использую MailMessage с альтернативной целью разослать приглашения на собрание:

meetingInfo = BuildMeetingRequest(start, end, attendees, organizer, subject, description, UID, location);   

     System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType("text/calendar; method=REQUEST"); 
     AlternateView ICSview = AlternateView.CreateAlternateViewFromString(meetingInfo,mimeType); 
     MailMessage message = new MailMessage(); 

     message.To.Add(to); 
     message.From = new MailAddress(from); 
     message.AlternateViews.Add(ICSview); 

     SmtpClient client = new SmtpClient(); 
     client.Send(message); 

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

Это хорошо работает и для отправки обновлений на запрос собрания. Единственная проблема, с которой я сталкиваюсь, заключается в том, что я не знаю подходящего формата для отправки отмены. Я попытался рассмотреть некоторые аннулирования запросов на собрание в текстовых редакторах и, похоже, не может определить разницу в формате между отменой/созданием.

Любая помощь на это очень ценится.

ответ

5

По RFC 2445 вам просто нужно установить STATUS:CANCELLED

+4

Это помогло, хотя, когда я только что статус ключевого слова в запросе на заседании, перспективы рассматривает это как встреча редактирования. Мне удалось отправить аннулирование собрания, добавив sw.AppendLine («МЕТОД: ОТМЕНА»); sw.AppendLine ("STATUS: CANCELED"); Также мне нужно было добавить еще один тип mime для отмены System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType ("text/calendar; method = CANCEL"); Спасибо. – BTmuney

+2

@BTmuney После отправки аннулирования встречи он также удалил собрание из календаря? Я пробовал это и его отмену работы и отправки, но не удаляет существующее собрание из календаря в Outlook. –