Поделиться через


IMessage::SetReadFlag

Область применения: Outlook 2013 | Outlook 2016

Задает или очищает флаг MSGFLAG_READ в свойстве PR_MESSAGE_FLAGS (PidTagMessageFlags) сообщения и управляет отправкой отчетов чтения.

HRESULT SetReadFlag(
  ULONG ulFlags
);

Параметры

ulFlags

[в] Битовая маска флагов, управляющая настройкой флага чтения сообщения, то есть флагом MSGFLAG_READ сообщения в свойстве PR_MESSAGE_FLAGS и обработкой отчетов о прочтении. Можно задать следующие флаги:

  • CLEAR_READ_FLAG. Флаг MSGFLAG_READ должен быть снят в PR_MESSAGE_FLAGS и не следует отправлять отчет о прочтении.

  • CLEAR_NRN_PENDING: флаг MSGFLAG_NRN_PENDING должен быть снят в PR_MESSAGE_FLAGS и нечитаемый отчет не должен отправляться.

  • CLEAR_RN_PENDING. Флаг MSGFLAG_RN_PENDING должен быть очищен в PR_MESSAGE_FLAGS и не следует отправлять отчет о прочтении.

  • GENERATE_RECEIPT_ONLY. Отчет о прочтении должен отправляться, если он находится в ожидании, но не должно быть изменений в состоянии флага MSGFLAG_READ.

  • MAPI_DEFERRED_ERRORS: позволяет SetReadFlag успешно возвращать данные, возможно, до завершения операции.

  • SUPPRESS_RECEIPT. Ожидающий отчет о прочтении должен быть отменен, если был запрошен отчет о прочтении и этот вызов изменяет состояние сообщения с непрочитанного на прочитанное. Если этот вызов не изменяет состояние сообщения, поставщик хранилища сообщений может игнорировать этот флаг.

Возвращаемое значение

S_OK

Флаг чтения сообщения успешно установлен или снят.

MAPI_E_NO_SUPPRESS

Поставщик хранилища сообщений не поддерживает подавление отчетов чтения.

MAPI_E_INVALID_PARAMETER

В параметре ulFlags задается одно из следующих сочетаний флагов:

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG

  • SUPPRESS_RECEIPT | CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

  • CLEAR_READ_FLAG | GENERATE_RECEIPT_ONLY

Замечания

Метод IMessage::SetReadFlag задает или очищает флаг MSGFLAG_READ сообщения в свойстве PR_MESSAGE_FLAGS и вызывает IMAPIProp::SaveChanges для сохранения сообщения. Установка флага MSGFLAG_READ помечает сообщение как прочитанное, что не обязательно указывает на то, что предполагаемый получатель действительно прочитал сообщение.

SetReadFlags также управляет отправкой отчетов о чтении. Отчет о прочтении отправляется только в том случае, если отправитель запросил его.

Невозможно изменить флаг чтения для:

  • Сообщения, которые не существуют.

  • Сообщения, которые были перемещены в другое место.

  • Сообщения, открытые с разрешением на чтение и запись.

  • Отправленные в настоящее время сообщения.

Примечания для вызывающих методов

Если ни один из флагов не задан в параметре ulFlags , применяются следующие правила:

  • Если MSGFLAG_READ уже задано, ничего не делать.

  • Если MSGFLAG_READ не задано, задайте его и отправьте все ожидающие отчеты о чтении, если задано свойство PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested).

Если заданы флаги SUPPRESS_RECEIPT и GENERATE_RECEIPT_ONLY, необходимо очистить бит PR_READ_RECEIPT_REQUESTED , если он задан, и отчет о прочтении не следует отправлять.

Если установлен флаг SUPPRESS_RECEIPT:

  • Если MSGFLAG_READ уже задано, ничего не делать.

  • Если MSGFLAG_READ не задано, задайте его и отмените все ожидающие чтение отчеты.

Когда флаг CLEAR_READ_FLAG установлен, снимите флаг MSGFLAG_READ в свойстве PR_MESSAGE_FLAGS каждого сообщения и не отправляйте отчеты о прочтении.

Если флаг GENERATE_RECEIPT_ONLY установлен, отправьте все ожидающие отчеты о прочтении. Не устанавливайте и не очищайте MSGFLAG_READ.

Если заданы флаги SUPPRESS_RECEIPT и GENERATE_RECEIPT_ONLY, присвойте свойству PR_READ_RECEIPT_REQUESTED значение FALSE, если оно задано и не отправляет отчет о чтении.

Вы можете оптимизировать поведение отчетов, подавляя создание отчетов чтения при определенных условиях. Однако если подавление отчетов не поддерживается, и клиент вызывает SetReadFlag с установленным флагом SUPPRESS_RECEIPT, верните MAPI_E_NO_SUPPRESS.

Справочные материалы по MFCMAPI

Пример кода MFCMAPI указан в приведенной ниже таблице.

Файл Функция Comment
FolderDlg.cpp
CFolderDlg::OnSetReadFlag
MFCMAPI использует метод IMessage::SetReadFlag для установки флагов чтения для выбранных сообщений.

См. также