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 для установки флагов чтения для выбранных сообщений. |