2010-03-04 22 views
14

Mam dodatek Outlook 2007, który próbuje importować pliki ics do obiektów Outlook.AppointmentItem, dzięki czemu mogę odczytać atrybuty dotyczące niektórych terminów. Obecnie nie jestem w stanie odczytać plików z powrotem do pamięci. Wszelkie sugestie dotyczące tego, co robię źle.Importowanie pliku ics do Outlook.AppointmentItem

Outlook.Application app = new Outlook.Application(); 
var item = app.Session.OpenSharedItem("C:\\meeting.ics") as Outlook.AppointmentItem; 
string meetingBody = item.Body; //<--*my item is null* 

Dzięki

+0

Czy plik ICS zostały UNIX lub Windows end-of-line znaków? Miałem problem, gdy próbowałem zrobić coś podobnego - ponieważ plik ics, kiedy próbowałem importować, został wyprodukowany przez PHP na platformie unix - wydawało się, że zmiana znaków końca linii na Windowsa pomogła. – alshapton

+0

Pliki @alshapton ... Pliki kompatybilne z ICS Wymagaj zakończenia linii CRLF - patrz RFC 5545, sek 3.1: "Informacje o zawartości związane z obiektem iCalendar są sformatowane przy użyciu składni podobnej do tej zdefiniowanej przez [RFC2425]. , informacje o treści składają się z linii treści oddzielonych CRLF. " –

Odpowiedz

1

Myślę, że problem wynika z faktu, że AppointmentItem i MeetingItem są różne klasy, więc nie można przekształcić bezpośrednio jeden do drugiego. Czy możesz wypróbować następujące rzeczy i sprawdzić, czy to działa?

var item = app.Session.OpenSharedItem(@"C:\meeting.ics") as Outlook.AppointmentItem; 
1

Wystarczy sprawdzić jego typ

  Set attObj = ns.OpenSharedItem(strFilename)     

      Select Case TypeName(attObj) 
       Case "MeetingItem" 
        Dim miNewMeetingItem As Outlook.MeetingItem 
        Set miNewMeetingItem = attObj 
        ... 
       Case "AppointmentItem" 
        Dim miNewAppointmentItem As Outlook.AppointmentItem 
        Set miNewAppointmentItem = attObj 
        ... 
       Case Else 
        Dim miNew As Outlook.MailItem 
        Set miNew = attObj 
        ... 
      End Select 

      Set attObj = Nothing