Partager via


IMessage::SetReadFlag

S’applique à : Outlook 2013 | Outlook 2016

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

HRESULT SetReadFlag(
  ULONG ulFlags
);

Paramètres

ulFlags

[in] Masque de bits des indicateurs qui contrôle la définition de l’indicateur de lecture d’un message, c’est-à-dire l’indicateur MSGFLAG_READ du message dans sa propriété PR_MESSAGE_FLAGS et le traitement des rapports de lecture. Les indicateurs suivants peuvent être définis :

  • CLEAR_READ_FLAG : l’indicateur de 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 à SetReadFlag de retourner avec succès, éventuellement avant la fin 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.

Valeur renvoyée

S_OK

L’indicateur de lecture du message 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 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

Remarques

La méthode IMessage ::SetReadFlag définit ou efface l’indicateur de MSGFLAG_READ du message dans la propriété PR_MESSAGE_FLAGS et appelle IMAPIProp ::SaveChanges pour enregistrer le message. La définition de l’indicateur MSGFLAG_READ marque un message comme ayant été 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. Un rapport de lecture n’est envoyé que si l’expéditeur en a demandé un.

L’indicateur de lecture ne peut pas être modifié pour :

  • 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 appelants

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 et envoyez les rapports de lecture en attente si la propriété PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested) est définie.

Si les indicateurs SUPPRESS_RECEIPT et GENERATE_RECEIPT_ONLY sont définis, le bit PR_READ_RECEIPT_REQUESTED, s’il est défini, doit être effacé et aucun rapport de lecture ne doit être envoyé.

Lorsque l’indicateur SUPPRESS_RECEIPT est défini :

  • 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 la propriété PR_READ_RECEIPT_REQUESTED sur FALSE si elle est définie et n’envoie pas de rapport de lecture.

Vous pouvez optimiser le comportement des rapports en supprimant la génération de rapports de lecture dans certaines conditions. Toutefois, si vous ne prenez pas en charge la suppression des rapports et qu’un client appelle SetReadFlag avec l’indicateur SUPPRESS_RECEIPT défini, retournez MAPI_E_NO_SUPPRESS.

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 IMessage ::SetReadFlag pour définir des indicateurs de lecture sur les messages sélectionnés.

Voir aussi