Partager via


IMAPIFolder::SetReadFlags

S’applique à : Outlook 2013 | Outlook 2016

Définit ou efface l’indicateur MSGFLAG_READ dans la propriété PR_MESSAGE_FLAGS (PidTagMessageFlags) d’un ou plusieurs messages du dossier, et gère l’envoi des rapports de lecture.

HRESULT SetReadFlags(
  LPENTRYLIST lpMsgList,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

Paramètres

lpMsgList

[in] Pointeur vers un tableau de structures ENTRYLIST qui identifient le ou les messages qui ont des indicateurs de lecture à définir ou à effacer. Si lpMsgList est défini sur NULL, les indicateurs de lecture de tous les messages du dossier sont définis ou effacés.

ulUIParam

[in] Handle de la fenêtre parente de l’indicateur de progression. Le paramètre ulUIParam est ignoré, sauf si l’indicateur MESSAGE_DIALOG est défini dans le paramètre ulFlags .

lpProgress

[in] Pointeur vers un objet progress qui affiche un indicateur de progression. Si NULL est passé dans lpProgress, le fournisseur de magasin de messages affiche un indicateur de progression à l’aide de l’implémentation de MAPI. Le paramètre lpProgress est ignoré, sauf si l’indicateur MESSAGE_DIALOG est défini dans ulFlags.

ulFlags

[in] Masque de bits d’indicateurs qui contrôle la définition de l’indicateur de lecture d’un message et le traitement des rapports de lecture. Les indicateurs suivants peuvent être définis :

  • CLEAR_READ_FLAG : l’indicateur MSGFLAG_READ doit être effacé dans PR_MESSAGE_FLAGS et aucun rapport de lecture ne doit être envoyé.

  • CLEAR_NRN_PENDING : l’indicateur de MSGFLAG_NRN_PENDING doit être effacé dans PR_MESSAGE_FLAGS et aucun rapport non lu ne doit être envoyé.

  • CLEAR_RN_PENDING : l’indicateur MSGFLAG_RN_PENDING doit être effacé dans PR_MESSAGE_FLAGS et aucun rapport de lecture ne doit être envoyé.

  • GENERATE_RECEIPT_ONLY : un rapport de lecture doit être envoyé s’il est en attente, mais l’état de l’indicateur de MSGFLAG_READ ne doit pas changer.

  • MAPI_DEFERRED_ERRORS : permet à SetReadFlags de retourner correctement, éventuellement avant la fin de l’opération.

  • MESSAGE_DIALOG : affiche un indicateur de progression pendant la poursuite de l’opération.

  • SUPPRESS_RECEIPT : un rapport de lecture en attente doit être annulé si un rapport de lecture a été demandé et que cet appel modifie l’état du message de non lu en lecture. Si cet appel ne modifie pas l’état du message, le fournisseur de la banque de messages peut ignorer cet indicateur.

Valeurs de retour

S_OK

L’indicateur de lecture pour le ou les messages spécifiés a été correctement défini ou effacé.

MAPI_E_NO_SUPPRESS

Le fournisseur de magasin de messages ne prend pas en charge la suppression des rapports de lecture.

MAPI_E_INVALID_PARAMETER

L’une des combinaisons incompatibles d’indicateurs suivantes est définie dans le paramètre ulFlags :

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

  • CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

MAPI_W_PARTIAL_COMPLETION

L’appel a réussi, mais tous les messages n’ont pas été traités avec succès. Lorsque cet avertissement est retourné, l’appel doit être géré comme ayant réussi. Pour tester cet avertissement, utilisez la macro HR_FAILED . Pour plus d’informations, consultez Utilisation de macros pour la gestion des erreurs.

Remarques

La méthode IMAPIFolder ::SetReadFlags définit ou efface l’indicateur MSGFLAG_READ dans la propriété PR_MESSAGE_FLAGS d’un ou plusieurs messages du dossier. La définition de l’indicateur MSGFLAG_READ marque un message comme lu, ce qui n’indique pas nécessairement que le destinataire prévu a réellement lu le message.

SetReadFlags gère également l’envoi de rapports de lecture.

L’indicateur de lecture ne peut pas être modifié pour les éléments suivants :

  • Messages qui n’existent pas.

  • Messages qui ont été déplacés ailleurs.

  • Messages ouverts avec une autorisation de lecture/écriture.

  • Messages actuellement envoyés.

Remarques pour les responsables de l’implémentation

Vous pouvez décider de ne pas prendre en charge l’envoi de rapports en lecture et la demande de suppression des rapports en lecture. Pour éviter de supprimer un rapport en lecture, retournez MAPI_E_NO_SUPPRESS lorsque SetReadFlags est appelé avec SUPPRESS_RECEIPT défini dans le paramètre ulFlags .

Lorsque le paramètre lpMsgList pointe vers plusieurs messages, effectuez l’opération aussi complètement que possible pour chaque message. N’arrêtez pas l’opération prématurément, sauf si une défaillance indépendante de votre contrôle se produit, telle qu’une insuffisance de mémoire, un manque d’espace disque ou une altération dans la banque de messages.

Si aucun des indicateurs n’est défini dans le paramètre ulFlags , les règles suivantes s’appliquent :

  • Si MSGFLAG_READ est déjà défini, ne rien faire.

  • Si MSGFLAG_READ n’est pas défini, définissez-la immédiatement et envoyez les rapports de lecture en attente si la propriété PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested) est définie.

Lorsque l’indicateur SUPPRESS_RECEIPT est défini, les règles suivantes s’appliquent :

  • Si MSGFLAG_READ est déjà défini, ne rien faire.

  • Si MSGFLAG_READ n’est pas défini, définissez-la et annulez tous les rapports de lecture en attente.

Lorsque l’indicateur CLEAR_READ_FLAG est défini, effacez l’indicateur MSGFLAG_READ dans la propriété PR_MESSAGE_FLAGS de chaque message et n’envoyez aucun rapport de lecture.

Lorsque l’indicateur GENERATE_RECEIPT_ONLY est défini, envoyez les rapports de lecture en attente. Ne définissez pas ou n’effacez pas MSGFLAG_READ.

Lorsque les indicateurs SUPPRESS_RECEIPT et GENERATE_RECEIPT_ONLY sont définis, définissez PR_READ_RECEIPT_REQUESTED sur FALSE s’il est défini et n’envoie pas de rapport de lecture.

Remarques pour les appelants

Attendez-vous à ces valeurs de retour dans les conditions suivantes.

Condition Valeur renvoy�e
SetReadFlags a traité avec succès chaque message. S_OK
SetReadFlags n’a pas pu traiter correctement chaque message. MAPI_W_PARTIAL_COMPLETION ou MAPI_E_NOT_FOUND
SetReadFlags n’a pas pu se terminer. Toute valeur d’erreur à l’exception de MAPI_E_NOT_FOUND

Lorsque SetReadFlags ne peut pas se terminer, ne supposez pas qu’aucun travail n’a été effectué. SetReadFlags a peut-être pu définir ou effacer l’indicateur MSGFLAG_READ pour un ou plusieurs messages avant de rencontrer l’erreur.

Référence MFCMAPI

Pour voir un exemple de code MFCMAPI, consultez le tableau suivant.

Fichier Fonction Commentaire
FolderDlg.cpp
CFolderDlg ::OnSetReadFlag
MFCMAPI utilise la méthode IMAPIFolder ::SetReadFlags pour définir manuellement les status de lecture sur les messages spécifiés.

Voir aussi