Platform SDK: SMTP Server Events

IMailTransportRoutingEngine::GetMessageRouter

[This is preliminary documentation and subject to change.]

Called by the event dispatcher on registered router sinks to notify the sinks that routing information is needed for a message.

[local]
HRESULT GetMessageRouter(
   [in]   IMailMsgProperties      *pIMailMsg,
   [in]   IMessageRouter          *pICurrentMessageRouter,
   [out]  IMessageRouter          **ppIMessageRouter
);
pIMailMsg
A reference to the MailMsg object that needs routing information.
pICurrentMessageRouter
A reference to the current message router.
ppIMessageRouter
On return, the sink's IMessageRouter interface reference.

Return Values

Value Description
S_OK Success. This sink will process routing requests.
ROUTER_E_NOTINTERESTED Error. Router will not process routing requests.

Remarks

To implement a sink that received message-tracking information from the SMTP service, you implement a COM class that exposes the IMsgTrackLog interface. You then register a sink binding to receive notifications of the OnLogMsg event. When logging/tracking information has been gathered for a message, each registered event sink is notified of the OnLogMsg event by the event dispatcher. The corresponding COM category identifier for this event is CATID_SMTP_MSGTRACKLOG. The string version of this GUID is "{c6df52aa-7db0-11d2-94f4-00c04f79f1d6}".

Router sinks can return the custom (facility ITF) HRESULT value ROUTER_E_NOTINTERESTED to indicate that it will not participate in routing the particular message.

If the sink will participate in routing messages, it can "chain" calls to subsequent routers using the passed IMessageRouter object reference. Routing requests that this router cannot handle can simply be passed to the next router sink in the chain.

cpp_quote("#define MTE_QUEUED_OUTBOUND 1010")

cpp_quote("#define MTE_TRANSFERRED_OUTBOUND 1011")

cpp_quote("#define MTE_RECEIVED_INBOUND 1012")

cpp_quote("#define MTE_TRANSFERRED_INBOUND 1013")

cpp_quote("#define MTE_MESSAGE_REROUTED 1014")

cpp_quote("#define MTE_REPORT_TRANSFERRED_IN 1015")

cpp_quote("#define MTE_REPORT_TRANSFERRED_OUT 1016")

cpp_quote("#define MTE_REPORT_GENERATED 1017")

cpp_quote("#define MTE_REPORT_ABSORBED 1018")

cpp_quote("#define MTE_SUBMIT_MESSAGE_TO_AQ 1019")

cpp_quote("#define MTE_BEGIN_OUTBOUND_TRANSFER 1020")

cpp_quote("#define MTE_BADMAIL 1021")

cpp_quote("#define MTE_AQ_FAILURE 1022")

cpp_quote("#define MTE_LOCAL_DELIVERY 1023")

cpp_quote("#define MTE_SUBMIT_MESSAGE_TO_CAT 1024")

cpp_quote("#define MTE_BEGIN_SUBMIT_MESSAGE 1025")

cpp_quote("#define MTE_AQ_FAILED_MESSAGE 1026")

cpp_quote("#define MTE_NDR_ALL 1030")