Platform SDK: SMTP Server Events |
[This is preliminary documentation and subject to change.]
// Sink.h : Declaration of the CSink #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> #include <atlbase.h> #include <atlimpl.cpp> #define FILEPATH_DEFAULT "c:\\mailarchive" extern FIO_CONTEXT fcntxtFile; extern OVERLAPPED overLapped; extern CComAutoCriticalSection g_csCritSec; ///////////////////////////////////////////////////////////////////////////// // CSink class ATL_NO_VTABLE CSink : public CComObjectRootEx<CComMultiThreadModel>, public CComCoClass<CSink, &CLSID_Sink>, public IMailTransportSubmission, public IEventIsCacheable, public IPersistPropertyBag, public IDispatchImpl<ISink, &IID_ISink, &LIBID_ARCHIVERLib> { public: CSink() : g_fHaveLogFileName(FALSE) { g_szLogFilePath = new char[sizeof(FILEPATH_DEFAULT)+1]; strcpy(g_szLogFilePath,FILEPATH_DEFAULT); } ~CSink() { if(g_szLogFilePath) { delete [] g_szLogFilePath; g_szLogFilePath = 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(IMailTransportSubmission) 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); /* ** IMailTransportSubmission */ STDMETHOD(OnMessageSubmission)( IMailMsgProperties *pIMailMsg, IMailTransportNotify *pINotify, PVOID pvNotifyContext); /* ** 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_fHaveLogFileName; LPSTR g_szLogFilePath; }; #endif //__SINK_H_