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


IXPLogon::StartMessage

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

Инициирует передачу входящего сообщения от поставщика транспорта в диспетчер очереди MAPI.

HRESULT StartMessage(
  ULONG ulFlags,
  LPMESSAGE lpMessage,
  ULONG FAR * lpulMsgRef
);

Параметры

ulFlags

[in] ���������������; ������ ���� ����� ����.

lpMessage

[в] Указатель на объект сообщения (представляющий входящее сообщение), имеющий разрешение на чтение и запись, который используется поставщиком транспорта для доступа к сообщению и управления им. Этот объект остается действительным до тех пор, пока поставщик транспорта не вернет из вызова IXPLogon::StartMessage.

lpulMsgRef

[out] Указатель на ссылочные значения, присвоенные сообщению. Диспетчер очереди MAPI инициализирует это значение до 1, а затем возвращает указатель на поставщика транспорта.

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

S_OK

����� ������� � ������ ��������� ��������� ��� ��������.

Замечания

Диспетчер очереди MAPI вызывает метод IXPLogon::StartMessage , чтобы инициировать передачу входящего сообщения от поставщика транспорта в диспетчер spooler MAPI. Прежде чем поставщик транспорта начнет использовать сообщение, на которое указывает lpMessage, он должен сохранить ссылку на сообщение в параметре lpulMsgRef для потенциального использования при вызове метода IXPLogon::TransportNotify .

Во время вызова StartMessage диспетчер очереди MAPI обрабатывает методы для объектов, открытых во время передачи сообщения, а также обрабатывает все вложения. Эта обработка может занять много времени. Поставщики транспорта могут часто вызывать функцию обратного вызова IMAPISupport::SpoolerYield для диспетчера очереди MAPI во время этой обработки, чтобы освободить время ЦП для других системных задач.

Все получатели в таблице получателей, которую поставщик транспорта создает для сообщения, должны содержать все необходимые свойства адресации. При необходимости поставщик может создать пользовательский получатель для представления определенного получателя. Однако если поставщик может создать запись получателя, содержащую дополнительные сведения, он должен сделать это. Например, если поставщик транспорта имеет достаточно сведений о формате получателя поставщика адресной книги, чтобы он смог создать допустимый идентификатор записи для получателя для этого формата, он должен создать идентификатор записи.

Если получены какие-либо непередачиваемые свойства, поставщик транспорта не должен хранить их в новом сообщении. Однако поставщик транспорта должен хранить все передаваемые свойства, получаемые им в новом сообщении.

Если входящее сообщение является отчетом о доставке или отчетом о недоставке и поставщик транспорта не может использовать метод IMAPISupport::StatusRecips для создания отчета из исходного сообщения, поставщик должен сам заполнить сообщение соответствующими свойствами. Однако поставщик транспорта не может задать свойство PR_ENTRYID сообщения (PidTagEntryId).

Чтобы сохранить входящее сообщение в соответствующем хранилище сообщений MAPI после обработки, поставщик транспорта вызывает метод IMAPIProp::SaveChanges . Если у поставщика транспорта нет сообщений для передачи в диспетчер очереди MAPI, он может остановить входящее сообщение, вернувшись из вызова StartMessage без вызова SaveChanges.

Все объекты, которые поставщик транспорта открывает во время вызова StartMessage , должны быть освобождены перед возвратом. Однако поставщик не должен освобождать объект сообщения, который диспетчер очереди MAPI первоначально передал в параметре lpMessage .

Если StartMessage возвращает ошибку, то сообщение в процессе освобождается без сохранения изменений и теряется. В этом случае поставщик транспорта должен передать флаг NOTIFY_CRITICAL_ERROR с вызовом метода IMAPISupport::SpoolerNotify и вызвать метод IXPLogon::P oll, чтобы уведомить диспетчер очереди MAPI о том, что он находится в состоянии серьезной ошибки.

Дополнительные сведения см. в разделе Взаимодействие с диспетчером очереди MAPI.

См. также

IMAPIProp::SaveChanges

IMAPISupport::SpoolerNotify

IMAPISupport::SpoolerYield

IMAPISupport::StatusRecips

IMessage::GetRecipientTable

IXPLogon::Poll

IXPLogon::TransportNotify

IXPLogon : IUnknown