2010-04-16 9 views
9

Sto creando un'applicazione utilizzando il framework ASP.NET MVC 1 in C#, dove sono presenti utenti che si registrano per eventi. Al momento della registrazione, creo una richiesta di riunione di OutlookAnnulla richieste riunioni Outlook tramite MailMessage in 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(); 
    } 

E una volta costruita, io uso MailMessage, con una vista alternativo per inviare la richiesta di riunione:

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

Quando gli utenti ottengono l'e-mail in Outlook, si presenta come una richiesta di riunione, al contrario di una normale email.

Questo funziona bene anche per l'invio di aggiornamenti alla richiesta di riunione. L'unico problema che sto avendo è che non conosco il formato corretto per l'invio di una cancellazione. Ho tentato di esaminare alcuni annullamenti delle richieste di riunione in editor di testo e non riesco a individuare la differenza nel formato tra l'annullamento/la creazione.

Qualsiasi aiuto su questo è molto apprezzato.

risposta

5

Secondo RFC 2445 voi solo bisogno di impostare STATUS:CANCELLED

+4

Questo ci ha aiutato, anche se quando ho usato solo quella parola chiave di stato nella convocazione di riunione, Outlook vede come una modifica riunione. Sono riuscito a inviare una cancellazione della riunione aggiungendo sw.AppendLine ("METHOD: CANCEL"); sw.AppendLine ("STATO: ANNULLATO"); Inoltre, avevo bisogno di aggiungere un altro tipo mime per la cancellazione System.Net.Mime.ContentType mimeType = new System.Net.Mime.ContentType ("text/calendar; method = CANCEL"); Grazie. – BTmuney

+2

@BTmuney Dopo aver inviato la cancellazione della riunione, ha rimosso anche la riunione dal calendario? Ho provato questo e il suo funzionamento e l'invio di cancellazione, ma non rimuove la riunione esistente dal calendario in Outlook. –

Problemi correlati