IMAPISession::OpenEntry
S’applique à : Outlook 2013 | Outlook 2016
Ouvre un objet et retourne un pointeur d’interface pour un accès supplémentaire.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
Paramètres
cbEntryID
[in] Nombre d’octets dans l’identificateur d’entrée vers lequel pointe le paramètre lpEntryID .
lpEntryID
[in] Pointeur vers l’identificateur d’entrée de l’objet à ouvrir.
lpInterface
[in] Pointeur vers l’identificateur d’interface (IID) qui représente l’interface à utiliser pour accéder à l’objet ouvert. La transmission de la valeur NULL renvoie l’interface standard de l’objet. Par exemple, si l’objet à ouvrir est un message, l’interface standard est IMessage ; pour les dossiers, il s’agit de IMAPIFolder. Les interfaces standard pour les objets de carnet d’adresses sont IDistList pour une liste de distribution et IMailUser pour un utilisateur de messagerie.
ulFlags
[in] Masque de bits d’indicateurs qui contrôle la façon dont l’objet est ouvert. Les indicateurs suivants peuvent être utilisés :
MAPI_BEST_ACCESS
Demande que l’objet soit ouvert à l’aide des autorisations réseau maximales autorisées pour l’utilisateur et de l’accès maximal à l’application cliente. Par exemple, si le client dispose d’une autorisation de lecture/écriture, l’objet doit être ouvert avec l’autorisation de lecture/écriture ; si le client dispose d’une autorisation en lecture seule, l’objet doit être ouvert avec l’autorisation en lecture seule.
MAPI_CACHE_OK
Utilisez tous les moyens, y compris les carnets d’adresses en mode hors connexion, pour effectuer la résolution de noms.
MAPI_CACHE_ONLY
Utilisez uniquement le carnet d’adresses en mode hors connexion pour effectuer la résolution de noms. Par exemple, vous pouvez utiliser cet indicateur pour permettre à une application cliente d’ouvrir la liste d’adresses globale (GAL) en mode d’échange mis en cache et d’accéder à une entrée de ce carnet d’adresses à partir du cache sans créer de trafic entre le client et le serveur. Cet indicateur est pris en charge uniquement par le fournisseur de carnets d’adresses Exchange.
MAPI_DEFERRED_ERRORS
Permet à OpenEntry de retourner avec succès, éventuellement avant que l’objet ne soit entièrement disponible pour le client appelant. Si l’objet n’est pas disponible, l’exécution d’un appel d’objet suivant peut entraîner une erreur.
MAPI_MODIFY
Demande l’autorisation de lecture/écriture. Par défaut, les objets sont ouverts avec une autorisation en lecture seule, et les clients ne doivent pas fonctionner selon l’hypothèse selon laquelle l’autorisation de lecture/écriture est accordée.
MAPI_NO_CACHE
N’utilisez pas le carnet d’adresses en mode hors connexion pour effectuer la résolution de noms. Cet indicateur est pris en charge uniquement par le fournisseur de carnets d’adresses Exchange.
SHOW_SOFT_DELETES
Afficher les éléments actuellement marqués comme supprimés de manière réversible (c’est-à-dire qu’ils sont dans la phase de temps de conservation des éléments supprimés).
lpulObjType
[out] Pointeur vers le type de l’objet ouvert.
lppUnk
[out] Pointeur vers un pointeur vers l’objet ouvert.
Valeur renvoyée
S_OK
L’objet a été ouvert avec succès.
MAPI_E_NO_ACCESS
Une tentative a été effectuée pour modifier un objet en lecture seule ou une tentative d’accès à un objet pour lequel l’utilisateur ne dispose pas des autorisations suffisantes.
MAPI_E_NOT_FOUND
Aucun objet n’est associé à l’identificateur d’entrée passé dans le paramètre lpEntryID .
MAPI_E_UNKNOWN_ENTRYID
L’identificateur d’entrée passé dans le paramètre lpEntryID est dans un format méconnaissable. Cette valeur est généralement retournée si le fournisseur de services qui contient l’objet n’est pas ouvert.
Remarques
La méthode IMAPISession ::OpenEntry ouvre un magasin de messages ou un objet de carnet d’adresses, renvoyant un pointeur vers une interface qui peut être utilisée pour accéder à l’objet.
Remarques pour les appelants
Importante
Lorsque vous ouvrez des entrées de dossier sur un magasin public, telles que des dossiers et des messages, utilisez IMsgStore ::OpenEntry au lieu de IMAPISession ::OpenEntry. Cela garantit que les dossiers publics fonctionnent correctement lorsque plusieurs comptes Exchange sont définis dans un profil.
Appelez IMAPISession ::OpenEntry uniquement lorsque vous ne savez pas quel type d’objet vous ouvrez. Si vous savez que vous ouvrez un dossier ou un message, appelez IMsgStore ::OpenEntry. Si vous savez que vous ouvrez un conteneur de carnet d’adresses, un utilisateur de messagerie ou une liste de distribution, appelez IAddrBook ::OpenEntry. Ces méthodes plus spécifiques sont plus rapides que IMAPISession ::OpenEntry.
MAPI ouvre tous les objets avec une autorisation en lecture seule, sauf si vous définissez l’indicateur MAPI_MODIFY ou MAPI_BEST_ACCESS dans le paramètre ulFlags . La définition de l’un de ces indicateurs ne garantit pas un type particulier d’accès ; Les autorisations accordées dépendent du fournisseur de services, du niveau d’accès et de l’objet. Pour déterminer le niveau d’accès de l’objet ouvert, récupérez sa propriété PR_ACCESS_LEVEL (PidTagAccessLevel).
Appeler IMAPISession ::OpenEntry et définir lpEntryID pour qu’il pointe vers l’identificateur d’entrée d’une banque de messages revient à appeler la méthode IMAPISession ::OpenMsgStore avec l’indicateur MDB_NO_DIALOG défini. Les paramètres d’indicateur sont également équivalents, sauf que pour demander l’autorisation de lecture/écriture avec OpenMsgStore, vous devez définir l’indicateur MDB_WRITE au lieu de MAPI_MODIFY.
Vérifiez la valeur retournée dans le paramètre lpulObjType pour déterminer si le type d’objet retourné correspond à ce que vous attendiez. Si le type d’objet n’est pas le type que vous attendiez, convertissez le pointeur du paramètre lppUnk en pointeur du type approprié. Par exemple, si vous ouvrez un dossier, castez lppUnk en pointeur de type LPMAPIFOLDER.
Référence MFCMAPI
Pour voir un exemple de code MFCMAPI, consultez le tableau suivant.
Fichier | Fonction | Commentaire |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI utilise la méthode IMAPISession ::OpenEntry pour ouvrir un objet. |