Freigeben über


Nachrichtenempfangsmodell

Gilt für: Outlook 2013 | Outlook 2016

Der Transportanbieter steuert, ob der MAPI-Spooler ihn für eingehende E-Mails abfragen muss oder ob er beim Eintreffen neuer E-Mails einen Rückruf an den MAPI-Spooler ausführt. Der Transportanbieter legt das SP_LOGON_POLL-Flag fest, wenn er von IXPProvider::TransportLogon zurückgibt, um Abrufe anzufordern. Andernfalls verwendet der Transportanbieter IMAPISupport::SpoolerNotify , wenn eingehende E-Mails verfügbar sind. Nachdem Sie erfahren haben, dass eingehende E-Mails verfügbar sind, öffnet der MAPI-Spooler eine neue Nachricht und fordert den Transportanbieter auf, die empfangenen Nachrichteneigenschaften in der Nachricht zu speichern.

Dieser Prozess funktioniert wie folgt:

  1. Verfügbare Nachrichten werden entweder durch den Transportanbieter angegeben, der IMAPISupport::SpoolerNotify aufruft, oder durch den MAPI-Spooler , der IXPLogon::P oll aufruft.

  2. Der MAPI-Spooler ruft IXPLogon::StartMessage auf, um den Prozess zu initiieren.

  3. Der Transportanbieter platziert einen Verweiswert an dem Speicherort, auf den in StartMessage verwiesen wird. Diese Verweiswerte ermöglichen es dem Transportanbieter und dem MAPI-Spooler, nachzuverfolgen, welche Nachricht verarbeitet wird, wenn mehrere Nachrichten zu übermitteln sind.

  4. Der Transportanbieter speichert die Nachrichtendaten in der übergebenen IMessage: IMAPIProp-instance.

  5. Der Transportanbieter ruft die IMAPIProp::SaveChanges-Methode für die IMessage-instance auf und gibt von StartMessage zurück.

  6. Der MAPI-Spooler ruft IXPLogon::TransportNotify auf, wenn die Nachrichtenübermittlung beendet werden muss.

Hinweis

Wenn ein Transportanbieter eine große Anzahl von Nachrichten übermitteln muss und der Transportanbieter IMAPISupport::SpoolerNotify anstelle von IXPLogon::P oll verwendet, sollte darauf geachtet werden, SpoolerNotify nicht zu häufig aufzurufen, um anderen Transportanbietern keine CPU-Zeit zu entziehen. Der MAPI-Spooler verfügt über Logik, um dies zu verhindern, aber im Allgemeinen sollte das Intervall zwischen SpoolerNotify-Aufrufen länger sein als die Zeit, die Ihr Transportanbieter benötigt, um eine Nachricht zu verarbeiten. > Außerdem kann der MAPI-Spooler eine eingehende Nachricht nicht sofort verarbeiten. Der MAPI-Spooler kann den Transportanbieter auffordern, andere Aufgaben auszuführen, bevor er die eingehende Nachricht empfängt.