2010-03-04 16 views
14

Tengo un complemento de Outlook 2007 que está tratando de importar archivos ics en objetos Outlook.AppointmentItem para que pueda leer atributos sobre ciertas citas. Actualmente no puedo volver a leer los íconos en la memoria. Cualquier sugerencia sobre lo que estoy haciendo mal.Importación de archivos ics a 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* 

Gracias

+0

caracteres ¿El archivo ICS han UNIX o Windows de fin de línea? Tuve un problema cuando estaba tratando de hacer algo similar, ya que el archivo ics cuando estaba tratando de importar fue producido por PHP en una plataforma Unix, cambiar los caracteres de final de línea a Windows parecía ayudar. – alshapton

+0

@alshapton ... Archivos compatibles con ICS REQUIEREN terminaciones de línea de CRLF; consulte RFC 5545, sección 3.1: "La información de contenido asociada a un objeto iCalendar está formateada con una sintaxis similar a la definida por [RFC2425]. , la información de contenido consiste en líneas de contenido separadas por CRLF ". –

Respuesta

1

Creo que el problema se debe al hecho de que AppointmentItem y MeetingItem son diferentes clases de modo que no se puede convertir uno a otro directamente. ¿Podría probar lo siguiente y verificar si funciona?

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

Sólo tienes que comprobar su tipo

  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 
Cuestiones relacionadas