0

Est-il possible de déterminer l'ID d'élément Exchange Server pour un objet MailItem (l'élément sélectionné dans l'explorateur actif)? La solution sur laquelle je travaille comporte un composant Outlook AddIn et un autre composant qui accède aux éléments de courrier via EWS.C# Outlook AddIn - Déterminer l'ID d'élément EWS pour l'e-mail sélectionné

J'ai un code similaire à ce qui suit dans mon Outlook Addin:

Outlook.Explorer ActiveExplorer = Globals.ThisAddIn.Application.ActiveExplorer(); 
object selectedItem = ActiveExplorer.Selection[1]; 
Outlook.MailItem selectedEmail = selectedItem as Outlook.MailItem; 

De cette façon, je peux accéder à certaines propriétés de l'e-mail, mais il est important pour le fonctionnement de la solution globale que les valeurs de propriété sont exactement les mêmes que ceux retournés par EWS. Par exemple, si la propriété renvoyait une heure, il serait important que l'heure corresponde à la milliseconde.

Si j'avais l'ItemID je pourrais lier et travailler avec l'Item (à partir de l'addin) en utilisant quelque chose comme ci-dessous.

Item myItem = Item.Bind(MyExchangeService, MyItemID); 

Sur un coup de tête, je l'ai essayé lier à MailItem.EntryID mais je suis une erreur d'identification malformés (qui ne me surprend pas). J'ai essayé de déterminer si l'ID Exchange était disponible via MailItem.PropertyAccessor.GetProperty mais je ne suis pas vraiment familier avec l'accès aux propriétés de cette manière et n'ai pas eu de chance jusqu'à présent.

Pensées?

Répondre

1

Je suis tombé sur le message Stack Overflow suivant qui n'a pas exactement répondu à ma question, mais j'ai changé d'objectif en en convertissant l'EntryID dans l'ID EWS plutôt que de trouver l'ID EWS.

Exchange ItemID differs from GlobalAppointmentID for Outlook AddIn

Avec ce nouvel angle j'ai pu trouver le site suivant qui directement adressé ma question.

https://bernhardelbl.wordpress.com/2013/04/15/converting-entryid-to-ewsid-using-exchange-web-services-ews/

J'ai posté le code ici dans son intégralité au cas où le lien est cassé.

string ConvertHexEntryIdToEwsId(ExchangeService esb, string sID, string strSMTPAdd) 
{ 
    AlternateId objAltID = new AlternateId(); 
    objAltID.Format = IdFormat.HexEntryId; 
    objAltID.Mailbox = strSMTPAdd; 
    objAltID.UniqueId = sID; 

    AlternateIdBase objAltIDBase = esb.ConvertId(objAltID, IdFormat.EwsId); 
    AlternateId objAltIDResp = (AlternateId)objAltIDBase; 
    return objAltIDResp.UniqueId; 
}