Platform SDK: SMTP Server Events |
[This is preliminary documentation and subject to change.]
#ifndef __SINK_H_ #define __SINK_H_ #include "resource.h" // main symbols #include <mailmsg.h> #include <smtpevent.h> #include <seo.h> #define SMTPINITGUID #include <smtpguid.h> #define RESPONSE_DEFAULT "Please try again later dude" ///////////////////////////////////////////////////////////////////////////// // CSink class ATL_NO_VTABLE CSink : public CComObjectRootEx<CComMultiThreadModel>, public CComCoClass<CSink, &CLSID_Sink>, public ISmtpInCommandSink, public IEventIsCacheable, public IPersistPropertyBag, public IDispatchImpl<ISink, &IID_ISink, &LIBID_SHIELDSUPLib> { public: CSink() : g_fHaveCustomText(FALSE) { g_szResponseText = new char[sizeof(RESPONSE_DEFAULT)+1]; strcpy(g_szResponseText,RESPONSE_DEFAULT); g_dwResponseSize = strlen(RESPONSE_DEFAULT) + 1; } ~CSink() { if(g_szResponseText) { delete [] g_szResponseText; g_szResponseText = NULL; } } DECLARE_REGISTRY_RESOURCEID(IDR_SINK) DECLARE_NOT_AGGREGATABLE(CSink) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CSink) COM_INTERFACE_ENTRY(ISink) COM_INTERFACE_ENTRY(ISmtpInCommandSink) COM_INTERFACE_ENTRY(IEventIsCacheable) COM_INTERFACE_ENTRY(IPersistPropertyBag) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP() // ISink public: STDMETHOD(UnRegisterSink)(/*[in]*/ long lInstance, /*[in]*/ BSTR BindingGUID); STDMETHOD(RegisterSink)(/*[in]*/ long lInstance, /*[in]*/ BSTR DisplayName, BSTR BindingGUID, BSTR ResponseText, VARIANT_BOOL fEnabled, BSTR* OutBindingGUID); /* ** ISmtpInCommandSink */ STDMETHOD(OnSmtpInCommand)( IUnknown *pServer, IUnknown *pSession, IMailMsgProperties *pMsg, ISmtpInCommandContext *pContext); /* ** IEventIsCacheable */ STDMETHOD(IsCacheable)(void){ return S_OK;} /* ** IPersistPropertyBag : IPersist */ STDMETHOD(GetClassID)(CLSID *pClassID); STDMETHOD(InitNew)(void); STDMETHOD(Load)(IPropertyBag* pBag,IErrorLog *pErrorLog); STDMETHOD(Save)( IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties); private: BOOL g_fHaveCustomText; DWORD g_dwResponseSize; LPSTR g_szResponseText; }; #endif //__SINK_H_