Compartilhar via


IMessage::SetReadFlag

Aplica-se a: Outlook 2013 | Outlook 2016

Define ou limpa o sinalizador MSGFLAG_READ na propriedade PR_MESSAGE_FLAGS (PidTagMessageFlags) da mensagem e gerencia o envio de relatórios de leitura.

HRESULT SetReadFlag(
  ULONG ulFlags
);

Parâmetros

ulFlags

[in] Bitmask de sinalizadores que controla a configuração do sinalizador de leitura de uma mensagem ou seja, o sinalizador de MSGFLAG_READ da mensagem em sua propriedade PR_MESSAGE_FLAGS e o processamento de relatórios de leitura. Os seguintes sinalizadores podem ser definidos:

  • CLEAR_READ_FLAG: o sinalizador de MSGFLAG_READ deve ser limpo no PR_MESSAGE_FLAGS e nenhum relatório de leitura deve ser enviado.

  • CLEAR_NRN_PENDING: o sinalizador de MSGFLAG_NRN_PENDING deve ser limpo em PR_MESSAGE_FLAGS e um relatório não lido não deve ser enviado.

  • CLEAR_RN_PENDING: o sinalizador de MSGFLAG_RN_PENDING deve ser limpo em PR_MESSAGE_FLAGS e nenhum relatório de leitura deve ser enviado.

  • GENERATE_RECEIPT_ONLY: um relatório de leitura deve ser enviado se um estiver pendente, mas não deve haver alteração no estado do sinalizador MSGFLAG_READ.

  • MAPI_DEFERRED_ERRORS: permite que SetReadFlag retorne com êxito, possivelmente antes da conclusão da operação.

  • SUPPRESS_RECEIPT: um relatório de leitura pendente deve ser cancelado se um relatório de leitura tiver sido solicitado e essa chamada alterar o estado da mensagem de não lido para lido. Se essa chamada não alterar o estado da mensagem, o provedor do repositório de mensagens poderá ignorar esse sinalizador.

Valor de retorno

S_OK

O sinalizador de leitura da mensagem foi definido ou limpo com êxito.

MAPI_E_NO_SUPPRESS

O provedor do repositório de mensagens não dá suporte à supressão de relatórios de leitura.

MAPI_E_INVALID_PARAMETER

Uma das seguintes combinações de sinalizadores é definida no parâmetro ulFlags :

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

  • CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

Comentários

O método IMessage::SetReadFlag define ou limpa o sinalizador de MSGFLAG_READ da mensagem na propriedade PR_MESSAGE_FLAGS e chama IMAPIProp::SaveChanges para salvar a mensagem. Definir o sinalizador MSGFLAG_READ marca uma mensagem como tendo sido lida, o que não indica necessariamente que o destinatário pretendido realmente leu a mensagem.

SetReadFlags também gerencia o envio de relatórios de leitura. Um relatório de leitura será enviado somente se o remetente tiver solicitado um.

O sinalizador de leitura não pode ser alterado para:

  • Mensagens que não existem.

  • Mensagens que foram movidas para outro lugar.

  • Mensagens abertas com permissão de leitura/gravação.

  • Mensagens enviadas no momento.

Notas para chamadores

Se nenhum dos sinalizadores for definido no parâmetro ulFlags, as seguintes regras se aplicam:

  • Se MSGFLAG_READ já estiver definido, não faça nada.

  • Se MSGFLAG_READ não estiver definido, defina-o e envie relatórios de leitura pendentes se a propriedade PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested) for definida.

Se os sinalizadores SUPPRESS_RECEIPT e GENERATE_RECEIPT_ONLY forem definidos, o bit PR_READ_RECEIPT_REQUESTED, se definido, deverá ser limpo e um relatório de leitura não deverá ser enviado.

Quando o sinalizador de SUPPRESS_RECEIPT é definido:

  • Se MSGFLAG_READ já estiver definido, não faça nada.

  • Se MSGFLAG_READ não estiver definido, defina-o e cancele todos os relatórios de leitura pendentes.

Quando o sinalizador CLEAR_READ_FLAG for definido, desmarque o sinalizador MSGFLAG_READ na propriedade PR_MESSAGE_FLAGS de cada mensagem e não envie relatórios de leitura.

Quando o sinalizador de GENERATE_RECEIPT_ONLY for definido, envie todos os relatórios de leitura pendentes. Não defina ou desmarque MSGFLAG_READ.

Quando os sinalizadores SUPPRESS_RECEIPT e GENERATE_RECEIPT_ONLY forem definidos, defina a propriedade PR_READ_RECEIPT_REQUESTED como FALSE se ela estiver definida e não enviar um relatório de leitura.

Você pode otimizar o comportamento do relatório suprimindo a geração de relatórios de leitura em determinadas condições. No entanto, se você não der suporte à supressão de relatórios e um cliente chamar SetReadFlag com o conjunto de sinalizadores SUPPRESS_RECEIPT, retorne MAPI_E_NO_SUPPRESS.

Referência do MFCMAPI

Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.

Arquivo Função Comentário
FolderDlg.cpp
CFolderDlg::OnSetReadFlag
O MFCMAPI usa o método IMessage::SetReadFlag para definir sinalizadores de leitura em mensagens selecionadas.

Confira também