Compartir a través de


IMAPIFolder::SetReadFlags

Hace referencia a: Outlook 2013 | Outlook 2016

Establece o borra la marca de MSGFLAG_READ en la propiedad PR_MESSAGE_FLAGS (PidTagMessageFlags) de uno o varios mensajes de la carpeta y administra el envío de informes de lectura.

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

Parameters

lpMsgList

[in] Puntero a una matriz de estructuras ENTRYLIST que identifican el mensaje o los mensajes que tienen marcas de lectura para establecer o borrar. Si lpMsgList se establece en NULL, se establecen o borran las marcas de lectura de todos los mensajes de la carpeta.

ulUIParam

[in] Identificador de la ventana primaria del indicador de progreso. El parámetro ulUIParam se omite a menos que se establezca la marca MESSAGE_DIALOG en el parámetro ulFlags .

lpProgress

[in] Puntero a un objeto de progreso que muestra un indicador de progreso. Si se pasa NULL en lpProgress, el proveedor del almacén de mensajes muestra un indicador de progreso mediante la implementación de MAPI. El parámetro lpProgress se omite a menos que la marca de MESSAGE_DIALOG se establezca en ulFlags.

ulFlags

[in] Máscara de bits de marcas que controla la configuración de la marca de lectura de un mensaje y el procesamiento de informes de lectura. Se pueden establecer las siguientes marcas:

  • CLEAR_READ_FLAG: la marca de MSGFLAG_READ debe borrarse en PR_MESSAGE_FLAGS y no se debe enviar un informe de lectura.

  • CLEAR_NRN_PENDING: la marca de MSGFLAG_NRN_PENDING debe borrarse en PR_MESSAGE_FLAGS y no se debe enviar un informe no leído.

  • CLEAR_RN_PENDING: la marca de MSGFLAG_RN_PENDING debe borrarse en PR_MESSAGE_FLAGS y no se debe enviar un informe de lectura.

  • GENERATE_RECEIPT_ONLY: se debe enviar un informe de lectura si uno está pendiente, pero no debe haber ningún cambio en el estado de la marca de MSGFLAG_READ.

  • MAPI_DEFERRED_ERRORS: permite que SetReadFlags se devuelva correctamente, posiblemente antes de que se complete la operación.

  • MESSAGE_DIALOG: muestra un indicador de progreso mientras continúa la operación.

  • SUPPRESS_RECEIPT: se debe cancelar un informe de lectura pendiente si se ha solicitado un informe de lectura y esta llamada cambia el estado del mensaje de no leído a leído. Si esta llamada no cambia el estado del mensaje, el proveedor del almacén de mensajes puede omitir esta marca.

Valores devueltos

S_OK

La marca de lectura del mensaje o los mensajes especificados se estableció o despejó correctamente.

MAPI_E_NO_SUPPRESS

El proveedor del almacén de mensajes no admite la supresión de informes de lectura.

MAPI_E_INVALID_PARAMETER

Una de las siguientes combinaciones incompatibles de marcas se establece en el parámetro ulFlags :

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

  • CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

MAPI_W_PARTIAL_COMPLETION

La llamada se realizó correctamente, pero no todos los mensajes se procesaron correctamente. Cuando se devuelve esta advertencia, la llamada debe controlarse correctamente. Para probar esta advertencia, use la macro HR_FAILED . Para obtener más información, vea Uso de macros para el control de errores.

Comentarios

El método IMAPIFolder::SetReadFlags establece o borra la marca de MSGFLAG_READ en la propiedad PR_MESSAGE_FLAGS de uno o varios de los mensajes de la carpeta. Al establecer la marca de MSGFLAG_READ se marca un mensaje como leído, lo que no indica necesariamente que el destinatario previsto haya leído realmente el mensaje.

SetReadFlags también administra el envío de informes de lectura.

La marca de lectura no se puede cambiar para lo siguiente:

  • Mensajes que no existen.

  • Mensajes que se han movido a otro lugar.

  • Mensajes abiertos con permiso de lectura y escritura.

  • Mensajes que se envían actualmente.

Notas a los implementadores

Puede decidir no admitir el envío de informes de lectura y la solicitud para suprimir los informes de lectura. Para evitar suprimir un informe de lectura, devuelva MAPI_E_NO_SUPPRESS cuando se llame a SetReadFlags con SUPPRESS_RECEIPT establecido en el parámetro ulFlags .

Cuando el parámetro lpMsgList apunte a más de un mensaje, realice la operación lo más completa posible para cada mensaje. No detenga la operación prematuramente a menos que se produzca un error que esté fuera de su control, como quedarse sin memoria, quedarse sin espacio en disco o daños en el almacén de mensajes.

Si no se establece ninguna de las marcas en el parámetro ulFlags , se aplican las reglas siguientes:

  • Si MSGFLAG_READ ya está establecido, no haga nada.

  • Si no se establece MSGFLAG_READ, establézcalo inmediatamente y envíe los informes de lectura pendientes si se establece la propiedad PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested).

Cuando se establece la marca de SUPPRESS_RECEIPT, se aplican las reglas siguientes:

  • Si MSGFLAG_READ ya está establecido, no haga nada.

  • Si no se establece MSGFLAG_READ, establézcalo y cancele los informes de lectura pendientes.

Cuando se establezca la marca de CLEAR_READ_FLAG, desactive la marca de MSGFLAG_READ en la propiedad PR_MESSAGE_FLAGS de cada mensaje y no envíe ningún informe de lectura.

Cuando se establezca la marca de GENERATE_RECEIPT_ONLY, envíe los informes de lectura pendientes. No establezca ni borre MSGFLAG_READ.

Cuando se establecen las marcas SUPPRESS_RECEIPT y GENERATE_RECEIPT_ONLY, establezca PR_READ_RECEIPT_REQUESTED en FALSE si se establece y no envía un informe de lectura.

Notas para los llamadores

Espere estos valores devueltos en las condiciones siguientes.

Condition Valor devuelto
SetReadFlags ha procesado correctamente todos los mensajes. S_OK
SetReadFlags no pudo procesar correctamente todos los mensajes. MAPI_W_PARTIAL_COMPLETION o MAPI_E_NOT_FOUND
SetReadFlags no se pudo completar. Cualquier valor de error excepto MAPI_E_NOT_FOUND

Cuando SetReadFlags no se pueda completar, no suponga que no se ha realizado ningún trabajo. Es posible que SetReadFlags haya podido establecer o borrar la marca de MSGFLAG_READ para uno o varios de los mensajes antes de encontrar el error.

Referencia de MFCMAPI

Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.

Archivo Función Comment
FolderDlg.cpp
CFolderDlg::OnSetReadFlag
MFCMAPI usa el método IMAPIFolder::SetReadFlags para establecer manualmente el estado de lectura en los mensajes especificados.

Vea también