2010-03-04 9 views
14

J'ai un complément dans Outlook 2007 qui essaie d'importer des fichiers ics en objets Outlook.AppointmentItem afin que je puisse lire les attributs sur certains rendez-vous. Actuellement, je ne suis pas capable de lire les ics en mémoire. Toutes les suggestions sur ce que je fais mal.Importation ics fichier à un 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* 

Merci

+0

Est-ce que le fichier ICS ont unix ou windows caractères de fin de ligne? J'ai eu un problème quand j'essayais de faire quelque chose de similaire - puisque le fichier ics quand j'essayais d'importer était produit par PHP sur une plate-forme Unix - le changement des caractères de fin de ligne vers Windows semblait aider. – alshapton

+0

@alshapton ... fichiers ICS compatible avec EXIGENT fins de ligne de CRLF - voir RFC 5545, sec 3.1:. « Les informations de contenu associé à un objet iCalendar est formaté en utilisant une syntaxe similaire à celle définie par [RFC2425] C'est , les informations de contenu sont constituées de lignes de contenu séparées par CRLF. " –

Répondre

1

Je pense que le problème est dû au fait que AppointmentItem et MeetingItem sont différentes classes afin que vous ne pouvez pas convertir un à l'autre directement. Pourriez-vous essayer ce qui suit et vérifier si cela fonctionne?

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

Il se peut que ce fichier ics présente simplement un élément de réunion plutôt qu'un article de rendez-vous. Pour autant que je sache, vous pouvez essayer d'utiliser le code comme ci-dessous,

Outlook.MeetingItem item = app.Session.OpenSharedItem(@"C:\SomeMeeting.ics") as Outlook.MeetingItem; 

Si vous avez des inquiétudes pour cela, s'il vous plaît ne hésitez pas à suivre.

http://social.msdn.microsoft.com/Forums/en-GB/vsto/thread/f98bfa75-a995-403e-a3fc-5be3a37511d7

1

juste vérifier son type

  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 
Questions connexes