2008-09-17 8 views
0

J'utilise C# pour traiter un message dans ma boîte de réception Outlook contenant des pièces jointes. L'une des pièces jointes est de type olEmbeddeditem. Je dois être capable de traiter le contenu de cette pièce jointe. De ce que je peux dire j'ai besoin de sauvegarder la pièce jointe sur le disque et utiliser CreateItemFromTemplate qui retournerait un objet. Le problème que j'ai, c'est qu'un olEmbeddeditem peut être l'un des types d'objets Outlook MailItem, ContactItem, MeetingItem, etc. Comment savez-vous quel type d'objet une pièce jointe olEmbeddeditem va être afin que vous connaissiez l'objet qui sera retourné par CreateItemFromTemplate? Sinon, s'il existe un meilleur moyen d'obtenir le contenu de la pièce jointe olEmbeddeditem dans un objet à traiter, je serais également ouvert à cela.Utilisation de CreateItemFromTemplate pour traiter une pièce jointe Outlook olEmbeddeditem

Répondre

1

Je trouve le code suivant sur Google Groups pour déterminer le type d'un objet Outlook:

Type t = SomeOutlookObject.GetType(); 
string messageClass = t.InvokeMember("MessageClass", 
    BindingFlags.Public | 
    BindingFlags.GetField | 
    BindingFlags.GetProperty, 
    null, 
    SomeOutlookObject, 
    new object[]{}).ToString(); 
Console.WriteLine("\tType: " + messageClass); 

Je ne sais pas si cela aide à un élément olEmbedded, mais il semble identifier les messages réguliers, calendrier articles, etc.

0

Travailler avec des pièces jointes qui sont également des e-mails qui à son tour contient des propriétés définies par l'utilisateur que je veux accéder, puis-je effectuer les étapes suivantes:

Outlook.Application mailApplication = new Outlook.Application(); 
Outlook.NameSpace mailNameSpace = mailApplication.GetNamespace(“mapi”); 
// make sure it is an embedded item 
If(myAttachment.Type == Outlook.OlAttachmentType.olEmbeddeditem) 
{ 
    myAttachment.Type.SaveAsFile(“temp.msg”); 
    Outlook.MailItem attachedEmail = (Outlook.MailItem)mailNameSpace.OpenSharedItem(“temp.msg”); 
    String customProperty = attachedEmail.PropertyAccessor.GetProperty(
     “http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-c000-000000000046}/myProp 
} 

Si vous ouvrez le MailItem en utilisant, alors je n'aurai pas accès aux propriétés comme mentionné ci-dessus:

Outlook.MailItem attachedEmail = (Outlook.MailItem)mailApplication.CreateFromTemplate(“temp.msg”); 
Questions connexes