//----------------------------------------------------------------------------- // // // File: aqintrnl.idl // // Description: IDL file that defines the internal AQueue COM interfaces. // // Author: Mike Swafford (MikeSwa) // // History: // 7/19/99 - MikeSwa Split from aqueue.idl. // // Copyright (C) 1997, 1999 Microsoft Corporation // //----------------------------------------------------------------------------- import "oaidl.idl"; import "ocidl.idl"; import "mailmsg.idl"; //---[ eDSNActions ]----------------------------------------------------------- // // // Description: Possible actions for DSN Generation event // // //----------------------------------------------------------------------------- typedef [v1_enum] enum { DSN_ACTION_FAILURE = 0x00000001, //Generate a FAILURE DSN for FAILED recips DSN_ACTION_FAILURE_ALL = 0x00000002, //Generate a FAILURE DSN for UNDELIVERED and FAILED recips DSN_ACTION_DELAYED = 0x00000004, //Generate a DELAY DSN for undelivered recips DSN_ACTION_RELAYED = 0x00000008, //Generate a RELAY DSN for delivered recips DSN_ACTION_EXPANDED = 0x00000010, //Generate a EXPANDED DSN for expanded DSN_ACTION_DELIVERED = 0x00000020, //Generate a DELIVERED DSN for delivered recips DSN_ACTION_TYPE_MASK = 0x0000003F, //Mask for the bits describing the type of DSN DSN_ACTION_DEFAULT_HDRS = 0x00000100, //If RET is not specified - default to headers only DSN_ACTION_DEFAULT_FULL = 0x00000200, //Default to sending FULL body DSN_ACTION_IGNORE_RET = 0x00000400, //Ignore RET and use Default specified DSN_ACTION_CONTEXT_STORE= 0x00100000, //DSN is being generated because of store DSN_ACTION_CONTEXT_CAT = 0x00200000, //DSN is being generated because of cat DSN_ACTION_CONTEXT_MTA = 0x00400000, //DSN is being generated becuase of mta } eDSNActions ; //---[ IConnectionRetryManager ]----------------------------------------------- // // // Description: Public interface that exposes methods that allow scheduled // connections and specialized retry logic. // // //----------------------------------------------------------------------------- [ object, uuid(B870CE2B-A755-11d2-A6A9-00C04FA3490A), helpstring("IConnectionRetryManager Interface"), pointer_default(unique) ] interface IConnectionRetryManager : IUnknown { [helpstring("method RetryLink")] HRESULT RetryLink( [in] DWORD cbDomainName, [in, size_is(cbDomainName + 1)] CHAR szDomainName[], [in] DWORD dwScheduleID, [in] GUID guidTransportSink); }; //---[ IConnectionRetrySink ]--------------------------------------------------- // // // Description: Interface used handle retry logic. // // Note: If the fAllowImmediateRetry is // set to TRUE, the given will be immediately put back // into the pool from which connections are made. If FALSE, a call to // RetryLink() must be made before any connections will // be allocated for the given . //----------------------------------------------------------------------------- [ object, uuid(B870CE2A-A755-11d2-A6A9-00C04FA3490A), helpstring("IConnectionRetrySink Interface"), pointer_default(unique) ] interface IConnectionRetrySink : IUnknown { //Notification when a connection is released [helpstring("method ConnectionReleased")] HRESULT ConnectionReleased( [in] DWORD cbDomainName, [in, size_is(cbDomainName+1)] CHAR szDomainName[], [in] DWORD dwDomainInfoFlags, //DomainInfo configuration Flags [in] DWORD dwScheduleID, [in] GUID guidRouting, [in] DWORD dwConnectionStatus, //eConnectionStatus [in] DWORD cFailedMessages, //# of failed message for *this* connection [in] DWORD cTriedMessages, //# of tried messages for *this* connection [in] DWORD cConsecutiveConnectionFailures,//# of other active connections for this domain [out] BOOL *pfAllowImmediateRetry, [out] FILETIME *pftNextRetryAttempt); }; //---[ IDSNGenerationSink ]---------------------------------------------------- // // // Description: // Interface that sinks the DSN generation event. Will need to be moved // to a public idl file (along with retry/schedule sink). // //----------------------------------------------------------------------------- [ object, uuid(E6641D7D-92AA-484b-BD5D-7099478CB2FE), helpstring("IDSNGeneration Interface"), ] interface IDSNGenerationSink : IUnknown { //Synchronous interface to generation a DSN and submit it to delivery [helpstring("method GenerateDSN")] HRESULT GenerateDSN( [in] ISMTPServer *pISMTPServer, [in] IMailMsgProperties *pIMailMsgProperties, [in] DWORD dwStartDomain, //starting index used to init context [in] DWORD dwDSNActions, //type(s) of DSN to generate [in] DWORD dwRFC821Status, //global RFC821 status [in] HRESULT hrStatus, //global HRESULT [in, size_is(cbDefaultDomain+1)] LPSTR szDefaultDomain, [in] DWORD cbDefaultDomain, [in, size_is(cbReportingMTA+1)] LPSTR szReportingMTA, //reporting MTA of DSN [in] DWORD cbReportingMTA, //string length of reporting MTA [in, size_is(cbReportingMTAType+1)] LPSTR szReportingMTAType, //reporting MTA type [in] DWORD cbReportingMTAType, //string length of reporting MTA Type [in, size_is(cbDSNContext+1)] LPSTR szDSNContext, [in] DWORD cbDSNContext, [in] DWORD dwLangId, //preferred language ID to generate DSNs in [in] DWORD dwDSNOptions, //eDSNOptions flags [in, size_is(cbCopyNDRTo+1)] LPSTR szCopyNDRTo, [in] DWORD cbCopyNDRTo, [out] IMailMsgProperties **ppIMailMsgPropertiesDSN, [out] DWORD *pdwDSNTypesGenerated, [out] DWORD *pcRecipsDSN, //# of recipes DSN'd [out] DWORD *pcIterationsLeft); //# of times this should be called };