2013-02-21 2 views
1

Dans notre fournisseur de messagerie MAPI, nous présentons des éléments électroniques et non Outlook (documents bureautiques, etc.). Techniquement, nous fournissons ces documents en tant qu'objet IMessage avec une seule pièce jointe et un PR_MESSAGE_CLASS spécifique (par exemple, IPM.Document.txtfile). Outlook considère alors que cet objet est un DocumentItem, pas un MailItem.DocumentItem (IMessage) perd la pièce jointe après ouverture

Comme vous pouvez le voir dans la capture d'écran ci-dessous, cela fonctionne très bien. Le prévisualiseur fonctionne comme prévu, un double clic sur l'élément ouvrira l'élément dans l'application appropriée (par exemple Bloc-notes).

Before opening - preview works fine

Cependant, après que l'élément a été ouvert, une fois l'application externe ferme, quelque chose va mal. L'aperçu est interrompu et l'élément ne peut pas être rouvert jusqu'à ce qu'un autre élément soit sélectionné en premier.

After opening - preview breaks, opening breaks

Selon Outlook Spy, notre objet IMessage est encore parfaitement bien. Il est le OOM DocumentItem emballage qui est maintenant manquant en quelque sorte, il est l'attachement:

DocumentItem Missing attachment

ce qui pourrait causer ce comportement? Y a-t-il un rafraîchissement qui nous manque? L'élément Outlook présente-t-il un ancien objet IMessage endommagé? Nous avons déjà passé pas mal de recherches sur ce sujet, tous les pointeurs sont les bienvenus!

[EDIT 1]

Voici Perspectives espion indiquant notre objet IMessage est toujours ok:

IMessage still fine

[EDIT 2]

Tant que l'extérieur l'application ne ferme pas, tout va bien. Je peux ouvrir le document autant de fois que je le souhaite, mais dès que je ferme une seule instance de la visionneuse externe, l'élément Outlook est "corrompu".

+1

Que signifie IMessage | GetAttachmentTable show? Pouvez-vous parcourir votre code pour voir les appels Outlook lorsque vous essayez de rouvrir l'élément? –

+0

IMessage | GetAttachmentTable va bien, je vais mettre à jour la réponse dans une minute. Lorsque doubleclicking l'élément _après_ "la pièce jointe a disparu", Outlook ne parle pas beaucoup à notre fournisseur de magasin de messages (un seul compareEntryIDs/getIDsFromNames ... aucun appel à notre IMessage ne se produit. –

+1

Quels noms/identifications Outlook demande-t-il lorsqu'il appelle GetIDsFromNames? –

Répondre

0

La réponse est avéré être très simple,

Les besoins PR_MESSAGE_FLAGS propriété pour inclure MSGFLAG_HASATTACH

L'ajout de ce drapeau immédiatement résolu le problème, et prend tout son sens. C'est juste que le comportement résultant d'Outlook (travailler au premier accès, puis briser) nous a découragés.

+0

Cela a du sens! –

Questions connexes