|  | /* | 
|  | * Copyright 2006 Robert Shearman for CodeWeavers | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | import "imnact.idl"; | 
|  |  | 
|  | interface IInternetTransport; | 
|  | interface ISMTPTransport; | 
|  | interface IPOP3Transport; | 
|  |  | 
|  | /* CLSIDs */ | 
|  |  | 
|  | cpp_quote("DEFINE_GUID(CLSID_IInternetMessageUrl, 0xca30cc91, 0xb1b3, 0x11d0, 0x85, 0xd0, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_ISMTPTransport, 0xfd853ce6, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IPOP3Transport, 0xfd853ce7, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_INNTPTransport, 0xfd853ce8, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IRASTransport, 0xfd853ce9, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IRangeList, 0xfd853cea, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IIMAPTransport, 0xfd853ceb, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IHTTPMailTransport, 0x5a580c11, 0xe5eb, 0x11d1, 0xa8, 0x6e, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IPropFindRequest, 0xbb847b8a, 0x054a, 0x11d2, 0xa8, 0x94, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);") | 
|  | cpp_quote("DEFINE_GUID(CLSID_IPropPatchRequest, 0xea678830, 0x235d, 0x11d2, 0xa8, 0xb6, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);") | 
|  |  | 
|  | /* Error Codes */ | 
|  |  | 
|  | cpp_quote("#ifndef HR_E") | 
|  | cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)") | 
|  | cpp_quote("#endif") | 
|  | cpp_quote("#ifndef HR_S") | 
|  | cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | /* General Error Codes */ | 
|  | cpp_quote("#define IXP_E_LOAD_SICILY_FAILED     HR_E(0xCC00)") | 
|  | cpp_quote("#define IXP_E_INVALID_CERT_CN        HR_E(0xCC01)") | 
|  | cpp_quote("#define IXP_E_INVALID_CERT_DATE      HR_E(0xCC02)") | 
|  | cpp_quote("#define IXP_E_ALREADY_CONNECTED      HR_E(0xCC03)") | 
|  | cpp_quote("#define IXP_E_CONN                   HR_E(0xCC04)") | 
|  | cpp_quote("#define IXP_E_NOT_CONNECTED          HR_E(0xCC05)") | 
|  | cpp_quote("#define IXP_E_CONN_SEND              HR_E(0xCC06)") | 
|  | cpp_quote("#define IXP_E_WOULD_BLOCK            HR_E(0xCC07)") | 
|  | cpp_quote("#define IXP_E_INVALID_STATE          HR_E(0xCC08)") | 
|  | cpp_quote("#define IXP_E_CONN_RECV              HR_E(0xCC09)") | 
|  | cpp_quote("#define IXP_E_INCOMPLETE             HR_E(0xCC0A)") | 
|  | cpp_quote("#define IXP_E_BUSY                   HR_E(0xCC0B)") | 
|  | cpp_quote("#define IXP_E_NOT_INIT               HR_E(0xCC0C)") | 
|  | cpp_quote("#define IXP_E_CANT_FIND_HOST         HR_E(0xCC0D)") | 
|  | cpp_quote("#define IXP_E_FAILED_TO_CONNECT      HR_E(0xCC0E)") | 
|  | cpp_quote("#define IXP_E_CONNECTION_DROPPED     HR_E(0xCC0F)") | 
|  | cpp_quote("#define IXP_E_INVALID_ADDRESS        HR_E(0xCC10)") | 
|  | cpp_quote("#define IXP_E_INVALID_ADDRESS_LIST   HR_E(0xCC11)") | 
|  | cpp_quote("#define IXP_E_SOCKET_READ_ERROR      HR_E(0xCC12)") | 
|  | cpp_quote("#define IXP_E_SOCKET_WRITE_ERROR     HR_E(0xCC13)") | 
|  | cpp_quote("#define IXP_E_SCOKET_INIT_ERROR      HR_E(0xCC14)") | 
|  | cpp_quote("#define IXP_E_SOCKET_CONNECT_ERROR   HR_E(0xCC15)") | 
|  | cpp_quote("#define IXP_E_INVALID_ACCOUNT        HR_E(0xCC16)") | 
|  | cpp_quote("#define IXP_E_USER_CANCEL            HR_E(0xCC17)") | 
|  | cpp_quote("#define IXP_E_SICILY_LOGON_FAILED    HR_E(0xCC18)") | 
|  | cpp_quote("#define IXP_E_TIMEOUT                HR_E(0xCC19)") | 
|  | cpp_quote("#define IXP_E_SECURE_CONNECT_FAILED  HR_E(0xCC1A)") | 
|  |  | 
|  | /* SMTP Failure Statuses */ | 
|  | cpp_quote("#define IXP_E_SMTP_RESPONSE_ERROR            HR_E(0xCC60)") | 
|  | cpp_quote("#define IXP_E_SMTP_UNKNOWN_RESPONSE_CODE     HR_E(0xCC61)") | 
|  | cpp_quote("#define IXP_E_SMTP_500_SYNTAX_ERROR          HR_E(0xCC62)") | 
|  | cpp_quote("#define IXP_E_SMTP_501_PARAM_SYNTAX          HR_E(0xCC63)") | 
|  | cpp_quote("#define IXP_E_SMTP_502_COMMAND_NOTIMPL       HR_E(0xCC64)") | 
|  | cpp_quote("#define IXP_E_SMTP_503_COMMAND_SEQ           HR_E(0xCC65)") | 
|  | cpp_quote("#define IXP_E_SMTP_504_COMMAND_PARAM_NOTIMPL HR_E(0xCC66)") | 
|  | cpp_quote("#define IXP_E_SMTP_421_NOT_AVAILABLE         HR_E(0xCC67)") | 
|  | cpp_quote("#define IXP_E_SMTP_450_MAILBOX_BUSY          HR_E(0xCC68)") | 
|  | cpp_quote("#define IXP_E_SMTP_550_MAILBOX_NOT_FOUND     HR_E(0xCC69)") | 
|  | cpp_quote("#define IXP_E_SMTP_451_ERROR_PROCESSING      HR_E(0xCC6A)") | 
|  | cpp_quote("#define IXP_E_SMTP_551_USER_NOT_LOCAL        HR_E(0xCC6B)") | 
|  | cpp_quote("#define IXP_E_SMTP_452_NO_SYSTEM_STORAGE     HR_E(0xCC6C)") | 
|  | cpp_quote("#define IXP_E_SMTP_552_STORAGE_OVERFLOW      HR_E(0xCC6D)") | 
|  | cpp_quote("#define IXP_E_SMTP_553_MAILBOX_NAME_SYNTAX   HR_E(0xCC6E)") | 
|  | cpp_quote("#define IXP_E_SMTP_554_TRANSACT_FAILED       HR_E(0xCC6F)") | 
|  |  | 
|  | /* SMTP Success Statuses */ | 
|  | cpp_quote("#define IXP_E_SMTP_211_SYSTEM_STATUS         HR_S(0xCC70)") | 
|  | cpp_quote("#define IXP_E_SMTP_214_HELP_MESSAGE          HR_S(0xCC71)") | 
|  | cpp_quote("#define IXP_E_SMTP_220_READY                 HR_S(0xCC72)") | 
|  | cpp_quote("#define IXP_E_SMTP_221_CLOSING               HR_S(0xCC73)") | 
|  | cpp_quote("#define IXP_E_SMTP_250_MAIL_ACTION_OKAY      HR_S(0xCC74)") | 
|  | cpp_quote("#define IXP_E_SMTP_251_FORWARDING_MAIL       HR_S(0xCC75)") | 
|  | cpp_quote("#define IXP_E_SMTP_354_START_MAIL_INPUT      HR_S(0xCC76)") | 
|  | cpp_quote("#define IXP_E_SMTP_CONTINUE                  HR_S(0xCC77)") | 
|  | cpp_quote("#define IXP_E_SMTP_334_AUTH_READY_RESPONSE   HR_S(0xCC78)") | 
|  | cpp_quote("#define IXP_E_SMTP_245_AUTH_SUCCESS          HR_S(0xCC79)") | 
|  |  | 
|  | /* More SMTP Failure Statuses */ | 
|  | cpp_quote("#define IXP_E_SMTP_REJECTED_SENDER           HR_E(0xCC78)") | 
|  | cpp_quote("#define IXP_E_SMTP_REJECTED_RECIPIENTS       HR_E(0xCC79)") | 
|  | cpp_quote("#define IXP_E_SMTP_NO_SENDER                 HR_E(0xCC7A)") | 
|  | cpp_quote("#define IXP_E_SMTP_NO_RECIPIENTS             HR_E(0xCC7B)") | 
|  | cpp_quote("#define IXP_E_SMTP_530_STARTTLS_REQUIRED     HR_E(0xCC7C)") | 
|  | cpp_quote("#define IXP_E_SMTP_NO_STARTTLS_SUPPORT       HR_E(0xCC7D)") | 
|  | cpp_quote("#define IXP_E_SMTP_NO_DSN_SUPPORT            HR_E(0xCC7E)") | 
|  | cpp_quote("#define IXP_E_SMTP_454_STARTTLS_FAILED       HR_E(0xCC7F)") | 
|  |  | 
|  | const SHORT CCHMAX_DOMAIN = 256; | 
|  | const SHORT CCHMAX_PHONE_NUMBER = 128; | 
|  |  | 
|  | const DWORD DEFAULT_IMAP_PORT = 143; | 
|  | const DWORD DEFAULT_POP3_PORT = 110; | 
|  | const DWORD DEFAULT_SMTP_PORT = 25; | 
|  | const DWORD DEFAULT_NNTP_PORT = 119; | 
|  |  | 
|  | typedef enum tagINETADDRTYPE | 
|  | { | 
|  | ADDR_TO, | 
|  | ADDR_FROM, | 
|  | ADDR_DSN_NEVER = 16, | 
|  | ADDR_DSN_SUCCESS = 32, | 
|  | ADDR_DSN_FAILURE = 64, | 
|  | ADDR_DSN_DELAY = 128 | 
|  | } INETADDRTYPE; | 
|  |  | 
|  | const DWORD ADDR_TOFROM_MASK = 0x1; | 
|  | const DWORD ADDR_DSN_MASK = 0xf0; | 
|  |  | 
|  | typedef enum tagDSNRET | 
|  | { | 
|  | DSNRET_DEFAULT, | 
|  | DSNRET_HDRS, | 
|  | DSNRET_FULL, | 
|  | } DSNRET; | 
|  |  | 
|  | typedef struct tagINETADDR | 
|  | { | 
|  | INETADDRTYPE addrtype; | 
|  | CHAR szEmail[CCHMAX_EMAIL_ADDRESS]; | 
|  | } INETADDR, *LPINETADDR; | 
|  |  | 
|  | typedef struct tagINETADDRLIST | 
|  | { | 
|  | ULONG cAddress; | 
|  | LPINETADDR prgAddress; | 
|  | } INETADDRLIST, *LPINETADDRLIST; | 
|  |  | 
|  | typedef enum tagRASCONNTYPE | 
|  | { | 
|  | RAS_CONNECT_LAN, | 
|  | RAS_CONNECT_MANUAL, | 
|  | RAS_CONNECT_RAS | 
|  | } RASCONNTYPE; | 
|  |  | 
|  | typedef enum tagHTTPMAILPROPTYPE | 
|  | { | 
|  | HTTPMAIL_PROP_INVALID, | 
|  | HTTPMAIL_PROP_ADBAR, | 
|  | HTTPMAIL_PROP_CONTACTS, | 
|  | HTTPMAIL_PROP_INBOX, | 
|  | HTTPMAIL_PROP_OUTBOX, | 
|  | HTTPMAIL_PROP_SENDMSG, | 
|  | HTTPMAIL_PROP_SENTITEMS, | 
|  | HTTPMAIL_PROP_DELETEDITEMS, | 
|  | HTTPMAIL_PROP_DRAFTS, | 
|  | HTTPMAIL_PROP_MSGFOLDERROOT, | 
|  | HTTPMAIL_PROP_SIG, | 
|  | HTTPMAIL_PROP_LAST | 
|  | } HTTPMAILPROPTYPE; | 
|  |  | 
|  | typedef enum tagHTTPMAILSPECIALFOLDER | 
|  | { | 
|  | HTTPMAIL_SF_NONE, | 
|  | HTTPMAIL_SF_UNRECOGNIZED, | 
|  | HTTPMAIL_SF_INBOX, | 
|  | HTTPMAIL_SF_DELETEDITEMS, | 
|  | HTTPMAIL_SF_DRAFTS, | 
|  | HTTPMAIL_SF_OUTBOX, | 
|  | HTTPMAIL_SF_SENTITEMS, | 
|  | HTTPMAIL_SF_CONTACTS, | 
|  | HTTPMAIL_SF_CALENDAR, | 
|  | HTTPMAIL_SF_MSNPROMO, | 
|  | HTTPMAIL_SF_LAST | 
|  | } HTTPMAILSPECIALFOLDER; | 
|  |  | 
|  | typedef enum tagHTTPMAILCONTACTTYPE | 
|  | { | 
|  | HTTPMAIL_CT_CONTACT, | 
|  | HTTPMAIL_CT_GROUP, | 
|  | HTTPMAIL_CT_LAST | 
|  | } HTTPMAILCONTACTTYPE; | 
|  |  | 
|  | const DWORD DAVNAMESPACE_UNKNOWN = 0xFFFFFFFF; | 
|  | const DWORD DAVNAMESPACE_DAV = 0; | 
|  | const DWORD DAVNAMESPACE_HOTMAIL = 1; | 
|  | const DWORD DAVNAMESPACE_HTTPMAIL = 2; | 
|  | const DWORD DAVNAMESPACE_MAIL = 3; | 
|  | const DWORD DAVNAMESPACE_CONTACTS = 4; | 
|  |  | 
|  | cpp_quote("#define ISF_SMTP_USEIPFORHELO        0x01") | 
|  | cpp_quote("#define ISF_ALWAYSPROMPTFORPASSWORD  0x02") | 
|  | /* for SMTP - send EHLO and use STARTTLS if available: */ | 
|  | cpp_quote("#define ISF_SSLONSAMEPORT            0x04") | 
|  | cpp_quote("#define ISF_QUERYDSNSUPPORT          0x08") | 
|  | /* for SMTP - send EHLO and use AUTH if available: */ | 
|  | cpp_quote("#define ISF_QUERYAUTHSUPPORT         0x10") | 
|  |  | 
|  | typedef struct INETSERVER | 
|  | { | 
|  | CHAR szAccount[CCHMAX_ACCOUNT_NAME]; | 
|  | CHAR szUserName[CCHMAX_USERNAME]; | 
|  | CHAR szPassword[CCHMAX_PASSWORD]; | 
|  | CHAR szServerName[CCHMAX_SERVER_NAME]; | 
|  | CHAR szConnectoid[CCHMAX_CONNECTOID]; | 
|  | RASCONNTYPE rasconntype; | 
|  | DWORD dwPort; | 
|  | BOOL fSSL; | 
|  | BOOL fTrySicily; | 
|  | DWORD dwTimeout; | 
|  | DWORD dwFlags; | 
|  | } INETSERVER, *LPINETSERVER; | 
|  |  | 
|  | typedef enum tagIXPTYPE | 
|  | { | 
|  | IXP_NNTP, | 
|  | IXP_SMTP, | 
|  | IXP_POP3, | 
|  | IXP_IMAP, | 
|  | IXP_RAS, | 
|  | IXP_HTTPMail | 
|  | } IXPTYPE; | 
|  |  | 
|  | typedef enum tagIXPSTATUS | 
|  | { | 
|  | IXP_FINDINGHOST, | 
|  | IXP_CONNECTING, | 
|  | IXP_SECURING, | 
|  | IXP_CONNECTED, | 
|  | IXP_AUTHORIZING, | 
|  | IXP_AUTHRETRY, | 
|  | IXP_AUTHORIZED, | 
|  | IXP_DISCONNECTING, | 
|  | IXP_DISCONNECTED, | 
|  | IXP_LAST | 
|  | } IXPSTATUS; | 
|  |  | 
|  | const DWORD DEPTH_INFINITY = 0xFFFFFFFE; | 
|  |  | 
|  | typedef DWORD MEMBERINFOFLAGS; | 
|  |  | 
|  | const MEMBERINFOFLAGS HTTP_MEMBERINFO_COMMONPROPS = 0x0; | 
|  | const MEMBERINFOFLAGS HTTP_MEMBERINFO_FOLDERPROPS = 0x1; | 
|  | const MEMBERINFOFLAGS HTTP_MEMBERINFO_MESSAGEPROPS = 0x2; | 
|  | const MEMBERINFOFLAGS HTTP_MEMBERINFO_ALLPROPS = HTTP_MEMBERINFO_FOLDERPROPS | HTTP_MEMBERINFO_MESSAGEPROPS; | 
|  |  | 
|  | typedef DWORD IMAP_MSGFLAGS; | 
|  |  | 
|  | const IMAP_MSGFLAGS IMAP_MSG_NOFLAGS = 0x00; | 
|  | const IMAP_MSGFLAGS IMAP_MSG_ANSWERED = 0x01; | 
|  | const IMAP_MSGFLAGS IMAP_MSG_FLAGGED = 0x02; | 
|  | const IMAP_MSGFLAGS IMAP_MSG_DELETED = 0x04; | 
|  | const IMAP_MSGFLAGS IMAP_MSG_SEEN = 0x08; | 
|  | const IMAP_MSGFLAGS IMAP_MSG_DRAFT = 0x10; | 
|  | const IMAP_MSGFLAGS IMAP_MSG_ALLFLAGS = 0x1f; | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(CA30F3FF-C9AC-11D1-9A3A-00C04FA309D4), | 
|  | local | 
|  | ] | 
|  | interface ITransportCallbackService : IUnknown | 
|  | { | 
|  | HRESULT GetParentWindow( | 
|  | [in]    DWORD dwReserved, | 
|  | [out]   HWND *phwndParent); | 
|  |  | 
|  | HRESULT GetAccount( | 
|  | [out]   LPDWORD pdwServerType, | 
|  | [out]   IImnAccount **ppAccount); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(0DF2C7E1-3435-11D0-81D0-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface ITransportCallback : IUnknown | 
|  | { | 
|  | typedef struct tagIXPRESULT | 
|  | { | 
|  | HRESULT hrResult; | 
|  | LPSTR pszResponse; | 
|  | UINT uiServerError; | 
|  | HRESULT hrServerError; | 
|  | DWORD dwSocketError; | 
|  | LPSTR pszProblem; | 
|  | } IXPRESULT, *LPIXPRESULT; | 
|  |  | 
|  | typedef enum tagCMDTYPE | 
|  | { | 
|  | CMD_SEND, | 
|  | CMD_RESP | 
|  | } CMDTYPE; | 
|  |  | 
|  | HRESULT OnTimeout( | 
|  | [in,out]    DWORD *pdwTimeout, | 
|  | [in]        IInternetTransport *pTransport); | 
|  |  | 
|  | HRESULT OnLogonPrompt( | 
|  | [in,out]    LPINETSERVER pInetServer, | 
|  | [in]        IInternetTransport *pTransport); | 
|  |  | 
|  | INT OnPrompt( | 
|  | [in]    HRESULT hrError, | 
|  | [in]    LPCSTR pszText, | 
|  | [in]    LPCSTR pszCaption, | 
|  | [in]    UINT uType, | 
|  | [in]    IInternetTransport *pTransport); | 
|  |  | 
|  | HRESULT OnStatus( | 
|  | [in]    IXPSTATUS ixpstatus, | 
|  | [in]    IInternetTransport *pTransport); | 
|  |  | 
|  | HRESULT OnError( | 
|  | [in]    IXPSTATUS ixpstatus, | 
|  | [in]    LPIXPRESULT pResult, | 
|  | [in]    IInternetTransport *pTransport); | 
|  |  | 
|  | HRESULT OnCommand( | 
|  | [in]    CMDTYPE cmdtype, | 
|  | [in]    LPSTR pszLine, | 
|  | [in]    HRESULT hrResponse, | 
|  | [in]    IInternetTransport *pTransport); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(1F636C01-364E-11D0-81D3-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface IInternetTransport : IUnknown | 
|  | { | 
|  | const boolean iitAUTHENTICATE = TRUE; | 
|  | const boolean iitDONT_AUTHENTICATe = FALSE; | 
|  | const boolean iitENABLE_ONCOMMAND = TRUE; | 
|  | const boolean iitDISABLE_ONCOMMAND = FALSE; | 
|  |  | 
|  | typedef enum tagIXPISSTATE | 
|  | { | 
|  | IXP_IS_CONNECTED, | 
|  | IXP_IS_BUSY, | 
|  | IXP_IS_READY, | 
|  | IXP_IS_AUTHENTICATED | 
|  | } IXPISSTATE; | 
|  |  | 
|  | HRESULT GetServerInfo( | 
|  | [in,out]    LPINETSERVER pInetServer); | 
|  |  | 
|  | IXPTYPE GetIXPType(); | 
|  |  | 
|  | HRESULT IsState( | 
|  | [in]    IXPISSTATE isstate); | 
|  |  | 
|  | HRESULT InetServerFromAccount( | 
|  | [in]        IImnAccount *pAccount, | 
|  | [in,out]    LPINETSERVER pInetServer); | 
|  |  | 
|  | HRESULT Connect( | 
|  | [in]    LPINETSERVER pInetServer, | 
|  | [in]    boolean fAuthenticate, | 
|  | [in]    boolean fCommandLogging); | 
|  |  | 
|  | HRESULT HandsOffCallback(); | 
|  |  | 
|  | HRESULT Disconnect(); | 
|  |  | 
|  | HRESULT DropConnection(); | 
|  |  | 
|  | HRESULT GetStatus( | 
|  | [out]   IXPSTATUS *pCurrentStatus); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(1F636C02-364E-11D0-81D3-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface ISMTPCallback : ITransportCallback | 
|  | { | 
|  | typedef enum tagSMTPCOMMAND | 
|  | { | 
|  | SMTP_NONE, | 
|  | SMTP_BANNER, | 
|  | SMTP_CONNECTED, | 
|  | SMTP_SEND_MESSAGE, | 
|  | SMTP_AUTH, | 
|  | SMTP_EHLO, | 
|  | SMTP_HELO, | 
|  | SMTP_MAIL, | 
|  | SMTP_RCPT, | 
|  | SMTP_RSET, | 
|  | SMTP_QUIT, | 
|  | SMTP_DATA, | 
|  | SMTP_DOT, | 
|  | SMTP_SEND_STREAM, | 
|  | SMTP_CUSTOM | 
|  | } SMTPCOMMAND; | 
|  |  | 
|  | typedef struct tagSMTPSTREAM | 
|  | { | 
|  | DWORD cbIncrement; | 
|  | DWORD cbCurrent; | 
|  | DWORD cbTotal; | 
|  | } SMTPSTREAM, *LPSMTPSTREAM; | 
|  |  | 
|  | typedef struct tagSMTPRESPONSE | 
|  | { | 
|  | SMTPCOMMAND command; | 
|  | BOOL fDone; | 
|  | IXPRESULT rIxpResult; | 
|  | ISMTPTransport *pTransport; | 
|  |  | 
|  | [switch_type(SMTPCOMMAND), switch_is(command)] | 
|  | union | 
|  | { | 
|  | [case(SMTP_SEND_STREAM)]    SMTPSTREAM rStreamInfo; | 
|  | [default]; | 
|  | }; | 
|  | } SMTPRESPONSE, *LPSMTPRESPONSE; | 
|  |  | 
|  | HRESULT OnResponse( | 
|  | [in] LPSMTPRESPONSE pResponse); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(0DF2C7E2-3435-11D0-81D0-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface ISMTPTransport : IInternetTransport | 
|  | { | 
|  | typedef struct tagSMTPMESSAGE | 
|  | { | 
|  | ULONG cbSize; | 
|  | LPSTREAM pstmMsg; | 
|  | INETADDRLIST rAddressList; | 
|  | } SMTPMESSAGE, *LPSMTPMESSAGE; | 
|  |  | 
|  | HRESULT InitNew( | 
|  | [in]    LPSTR pszLogFilePath, | 
|  | [in]    ISMTPCallback *pCallback); | 
|  |  | 
|  | cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") | 
|  | cpp_quote("#undef SendMessage") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | HRESULT SendMessage( | 
|  | [in]    LPSMTPMESSAGE pMessage); | 
|  |  | 
|  | HRESULT CommandMAIL( | 
|  | [in]    LPSTR pszEmailFrom); | 
|  |  | 
|  | HRESULT CommandRCPT( | 
|  | [in]    LPSTR pszEmailTo); | 
|  |  | 
|  | HRESULT CommandEHLO(); | 
|  |  | 
|  | HRESULT CommandHELO(); | 
|  |  | 
|  | HRESULT CommandAUTH( | 
|  | [in]    LPSTR pszAuthType); | 
|  |  | 
|  | HRESULT CommandQUIT(); | 
|  |  | 
|  | HRESULT CommandRSET(); | 
|  |  | 
|  | HRESULT CommandDATA(); | 
|  |  | 
|  | HRESULT CommandDOT(); | 
|  |  | 
|  | HRESULT SendDataStream( | 
|  | [in]    IStream *pStream, | 
|  | [in]    ULONG cbSize); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(0DF2C7EC-3435-11D0-81D0-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface ISMTPTransport2 : ISMTPTransport | 
|  | { | 
|  | typedef struct tagSMTPMESSAGE2 | 
|  | { | 
|  | SMTPMESSAGE smtpMsg; | 
|  | LPSTR pszDSNENVID; | 
|  | DSNRET dsnRet; | 
|  | DWORD dwReserved; | 
|  | DWORD dwReserved2; | 
|  | } SMTPMESSAGE2, *LPSMTPMESSAGE2; | 
|  |  | 
|  | HRESULT SetWindow(); | 
|  |  | 
|  | HRESULT ResetWindow(); | 
|  |  | 
|  | HRESULT SendMessage2( | 
|  | [in]    LPSMTPMESSAGE2 pMessage); | 
|  |  | 
|  | HRESULT CommandRCPT2( | 
|  | [in]    LPSTR pszEmailTo, | 
|  | [in]    INETADDRTYPE atDSN); | 
|  | } | 
|  |  | 
|  | /* FIXME: IDAVNamespaceArbiter, IPropPatchRequest, IPropFindRequest, IPropFindMultiResponse, IPropFindResponse, IHTTPMailCallback, IHTTPMailTransport */ | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(0DF2C7E3-3435-11D0-81D0-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface IPOP3Callback : ITransportCallback | 
|  | { | 
|  | typedef enum tagPOP3COMMAND | 
|  | { | 
|  | POP3_NONE, | 
|  | POP3_BANNER, | 
|  | POP3_CONNECTED, | 
|  | POP3_USER, | 
|  | POP3_PASS, | 
|  | POP3_AUTH, | 
|  | POP3_UIDL, | 
|  | POP3_STAT, | 
|  | POP3_LIST, | 
|  | POP3_DELE, | 
|  | POP3_RETR, | 
|  | POP3_TOP, | 
|  | POP3_NOOP, | 
|  | POP3_QUIT, | 
|  | POP3_RSET, | 
|  | POP3_CUSTOM | 
|  | } POP3COMMAND; | 
|  |  | 
|  | typedef struct tagPOP3RETR | 
|  | { | 
|  | BOOL fHeader; | 
|  | BOOL fBody; | 
|  | DWORD dwPopId; | 
|  | DWORD cbSoFar; | 
|  | LPSTR pszLines; | 
|  | ULONG cbLines; | 
|  | } POP3RETR, *LPPOP3RETR; | 
|  |  | 
|  | typedef struct tagPOP3TOP | 
|  | { | 
|  | BOOL fHeader; | 
|  | BOOL fBody; | 
|  | DWORD dwPopId; | 
|  | DWORD cPreviewLines; | 
|  | DWORD cbSoFar; | 
|  | LPSTR pszLines; | 
|  | ULONG cbLines; | 
|  | } POP3TOP, *LPPOP3TOP; | 
|  |  | 
|  | typedef struct tagPOP3LIST | 
|  | { | 
|  | DWORD dwPopId; | 
|  | DWORD cbSize; | 
|  | } POP3LIST, *LPPOP3LIST; | 
|  |  | 
|  | typedef struct tagPOP3UIDL | 
|  | { | 
|  | DWORD dwPopId; | 
|  | LPSTR pszUidl; | 
|  | } POP3UIDL, *LPPOP3UIDL; | 
|  |  | 
|  | typedef struct tagPOP3STAT | 
|  | { | 
|  | DWORD cMessages; | 
|  | DWORD cbMessages; | 
|  | } POP3STAT, *LPPOP3STAT; | 
|  |  | 
|  | typedef struct tagPOP3RESPONSE | 
|  | { | 
|  | POP3COMMAND command; | 
|  | BOOL fDone; | 
|  | IXPRESULT rIxpResult; | 
|  | IPOP3Transport *pTransport; | 
|  | BOOL fValidInfo; | 
|  | [switch_type(POP3COMMAND), switch_is(command)] | 
|  | union | 
|  | { | 
|  | [case(POP3_UIDL)] POP3UIDL rUidlInfo; | 
|  | [case(POP3_STAT)] POP3STAT rStatInfo; | 
|  | [case(POP3_LIST)] POP3LIST rListInfo; | 
|  | [case(POP3_DELE)] DWORD dwPopId; | 
|  | [case(POP3_RETR)] POP3RETR rRetrInfo; | 
|  | [case(POP3_TOP)]  POP3TOP rTopInfo; | 
|  | [default]; | 
|  | }; | 
|  | } POP3RESPONSE, *LPPOP3RESPONSE; | 
|  |  | 
|  | HRESULT OnResponse( | 
|  | [in]    LPPOP3RESPONSE pResponse); | 
|  | } | 
|  |  | 
|  | [ | 
|  | object, | 
|  | uuid(0DF2C7E4-3435-11D0-81D0-00C04FD85AB4), | 
|  | local | 
|  | ] | 
|  | interface IPOP3Transport : IInternetTransport | 
|  | { | 
|  | typedef enum tagPOP3CMDTYPE | 
|  | { | 
|  | POP3CMD_GET_POPID, | 
|  | POP3CMD_GET_MARKED, | 
|  | POP3CMD_GET_ALL | 
|  | } POP3CMDTYPE; | 
|  |  | 
|  | typedef enum tagPOP3MARKTYPE | 
|  | { | 
|  | POP3_MARK_FOR_TOP = 0x01, | 
|  | POP3_MARK_FOR_RETR = 0x02, | 
|  | POP3_MARK_FOR_DELE = 0x04, | 
|  | POP3_MARK_FOR_UIDL = 0x08, | 
|  | POP3_MARK_FOR_LIST = 0x10 | 
|  | } POP3MARKTYPE; | 
|  |  | 
|  | HRESULT InitNew( | 
|  | [in]    LPSTR pszLogFilePath, | 
|  | [in]    IPOP3Callback *pCallback); | 
|  |  | 
|  | HRESULT MarkItem( | 
|  | [in]    POP3MARKTYPE marktype, | 
|  | [in]    DWORD dwPopId, | 
|  | [in]    boolean fMarked); | 
|  |  | 
|  | HRESULT CommandAUTH( | 
|  | [in]    LPSTR pszAuthType); | 
|  |  | 
|  | HRESULT CommandUSER( | 
|  | [in]    LPSTR pszUserName); | 
|  |  | 
|  | HRESULT CommandPASS( | 
|  | [in]    LPSTR pszPassword); | 
|  |  | 
|  | HRESULT CommandLIST( | 
|  | [in]    POP3CMDTYPE cmdtype, | 
|  | [in]    DWORD dwPopId); | 
|  |  | 
|  | HRESULT CommandTOP( | 
|  | [in]    POP3CMDTYPE cmdtype, | 
|  | [in]    DWORD dwPopId, | 
|  | [in]    DWORD cPreviewLines); | 
|  |  | 
|  | HRESULT CommandQUIT(); | 
|  |  | 
|  | HRESULT CommandSTAT(); | 
|  |  | 
|  | HRESULT CommandNOOP(); | 
|  |  | 
|  | HRESULT CommandRSET(); | 
|  |  | 
|  | HRESULT CommandUIDL( | 
|  | [in]    POP3CMDTYPE cmdtype, | 
|  | [in]    DWORD dwPopId); | 
|  |  | 
|  | HRESULT CommandDELE( | 
|  | [in]    POP3CMDTYPE cmdtype, | 
|  | [in]    DWORD dwPopId); | 
|  |  | 
|  | HRESULT CommandRETR( | 
|  | [in]    POP3CMDTYPE cmdtype, | 
|  | [in]    DWORD dwPopId); | 
|  | } | 
|  |  | 
|  | /* FIXME: INNTPCallback, INNTPTransport */ | 
|  |  | 
|  | /* FIXME: IRangeList */ | 
|  |  | 
|  | /* FIXME: IIMAPCallback, IIMAPTransport */ | 
|  |  | 
|  | #if 0 | 
|  | cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);") | 
|  | cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);") | 
|  | cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);") | 
|  | cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);") | 
|  | cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);") | 
|  | #endif | 
|  | cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);") | 
|  | cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);") |