| /* |
| * 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; |
| interface IIMAPTransport; |
| |
| /* 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_ISMTPTransport2, 0xdf2c7eC, 0x3435, 0x11d0, 0x81, 0xd0, 0x0, 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 */ |
| |
| [ |
| object, |
| uuid(8C438160-4EF6-11d0-874F-00AA00530EE9), |
| local, |
| ] |
| interface IRangeList : IUnknown |
| { |
| const ULONG RL_RANGE_ERROR = ((ULONG)-1); |
| const ULONG RL_LAST_MESSAGE = ((ULONG)-1); |
| |
| HRESULT Clear(); |
| |
| HRESULT IsInRange( |
| [in] const ULONG value); |
| |
| HRESULT Min( |
| [out] ULONG *pulMin); |
| |
| HRESULT Max( |
| [out] ULONG *pulMax); |
| |
| HRESULT Save( |
| [out] byte **ppbDestination, |
| [out] ULONG *pulSizeOfDestination); |
| |
| HRESULT Load( |
| [in, size_is(ulSizeOfSource)] byte *pbSource, |
| [in] const ULONG ulSizeOfSource); |
| |
| HRESULT AddRange( |
| [in] const ULONG low, |
| [in] const ULONG high); |
| |
| HRESULT AddSingleValue( |
| [in] const ULONG value); |
| |
| HRESULT AddRangeList( |
| [in] const IRangeList *prl); |
| |
| HRESULT DeleteRange( |
| [in] const ULONG low, |
| [in] const ULONG high); |
| |
| HRESULT DeleteSingleValue( |
| [in] const ULONG value); |
| |
| HRESULT DeleteRangeList( |
| [in] const IRangeList *prl); |
| |
| HRESULT MinOfRange( |
| [in] const ULONG value, |
| [out] ULONG *pulMinOfRange); |
| |
| HRESULT MaxOfRange( |
| [in] const ULONG value, |
| [out] ULONG *pulMaxOfRange); |
| |
| HRESULT RangeToIMAPString( |
| [out] LPSTR *ppszDestination, |
| [out] LPDWORD pdwLengthOfDestination); |
| |
| HRESULT Next( |
| [in] const ULONG current, |
| [out] ULONG *pulNext); |
| |
| HRESULT Prev( |
| [in] const ULONG current, |
| [out] ULONG *pulPrev); |
| |
| HRESULT Cardinality( |
| [out] ULONG *pulCardinality); |
| |
| HRESULT CardinalityFrom( |
| [in] const ULONG ulStartPoint, |
| [out] ULONG *pulCardinalityFrom); |
| } |
| |
| [ |
| object, |
| uuid(E9E9D8A3-4EDD-11d0-874F-00AA00530EE9), |
| local |
| ] |
| interface IIMAPCallback : ITransportCallback |
| { |
| typedef DWORD IMAP_MBOXFLAGS; |
| const IMAP_MBOXFLAGS IMAP_MBOX_NOFLAGS = 0x0; |
| const IMAP_MBOXFLAGS IMAP_MBOX_MARKED = 0x1; |
| const IMAP_MBOXFLAGS IMAP_MBOX_NOINFERIORS = 0x2; |
| const IMAP_MBOXFLAGS IMAP_MBOX_NOSELECT = 0x4; |
| const IMAP_MBOXFLAGS IMAP_MBOX_UNMARKED = 0x8; |
| const IMAP_MBOXFLAGS IMAP_MBOX_ALLFLAGS = 0xf; |
| |
| typedef enum tagIMAP_RESPONSE_TYPE |
| { |
| irtERROR_NOTIFICATION, |
| irtCOMMAND_COMPLETION, |
| irtSERVER_ALERT, |
| irtPARSE_ERROR, |
| irtMAILBOX_UPDATE, |
| irtDELETED_MSG, |
| irtFETCH_BODY, |
| irtUPDATE_MSG, |
| irtAPPLICABLE_FLAGS, |
| irtPERMANENT_FLAGS, |
| irtUIDVALIDITY, |
| irtREADWRITE_STATUS, |
| irtTRYCREATE, |
| irtSEARCH, |
| irtMAILBOX_LISTING, |
| irtMAILBOX_STATUS, |
| irtAPPEND_PROGRESS, |
| irtUPDATE_MSG_EX |
| } IMAP_RESPONSE_TYPE; |
| |
| typedef struct tagFETCH_BODY_PART |
| { |
| DWORD dwMsgSeqNum; |
| LPSTR pszBodyTag; |
| DWORD dwTotalBytes; |
| DWORD dwSizeOfData; |
| DWORD dwOffset; |
| BOOL fDone; |
| LPSTR pszData; |
| LPARAM lpFetchCookie1; |
| LPARAM lpFetchCookie2; |
| } FETCH_BODY_PART; |
| |
| typedef struct tagFETCH_CMD_RESULTS |
| { |
| DWORD dwMsgSeqNum; |
| BOOL bMsgFlags; |
| IMAP_MSGFLAGS mfMsgFlags; |
| BOOL bRFC822Size; |
| DWORD dwRFC822Size; |
| BOOL bUID; |
| DWORD dwUID; |
| BOOL bInternalDate; |
| FILETIME ftInternalDate; |
| LPARAM lpFetchCookie1; |
| LPARAM lpFetchCookie2; |
| } FETCH_CMD_RESULTS; |
| |
| typedef struct tagIMAPADDR |
| { |
| LPSTR pszName; |
| LPSTR pszADL; |
| LPSTR pszMailbox; |
| LPSTR pszHost; |
| struct tagIMAPADDR *pNext; |
| } IMAPADDR; |
| |
| typedef struct tagFETCH_CMD_RESULTS_EX |
| { |
| DWORD dwMsgSeqNum; |
| BOOL bMsgFlags; |
| IMAP_MSGFLAGS mfMsgFlags; |
| BOOL bRFC822Size; |
| DWORD dwRFC822Size; |
| BOOL bUID; |
| DWORD dwUID; |
| BOOL bInternalDate; |
| FILETIME ftInternalDate; |
| LPARAM lpFetchCookie1; |
| LPARAM lpFetchCookie2; |
| BOOL bEnvelope; |
| FILETIME ftENVDate; |
| LPSTR pszENVSubject; |
| IMAPADDR *piaENVFrom; |
| IMAPADDR *piaENVSender; |
| IMAPADDR *piaENVReplyTo; |
| IMAPADDR *piaENVTo; |
| IMAPADDR *piaENVCc; |
| IMAPADDR *piaENVBcc; |
| LPSTR pszENVInReplyTo; |
| LPSTR pszENVMessageID; |
| DWORD dwReserved1; |
| DWORD dwReserved2; |
| DWORD dwReserved3; |
| } FETCH_CMD_RESULTS_EX; |
| |
| typedef struct tagMBOX_MSGCOUNT |
| { |
| BOOL bGotExistsResponse; |
| DWORD dwExists; |
| BOOL bGotRecentResponse; |
| DWORD dwRecent; |
| BOOL bGotUnseenResponse; |
| DWORD dwUnseen; |
| } MBOX_MSGCOUNT; |
| |
| typedef struct tagIMAP_LISTLSUB_RESPONSE |
| { |
| LPSTR pszMailboxName; |
| IMAP_MBOXFLAGS imfMboxFlags; |
| char cHierarchyChar; |
| } IMAP_LISTLSUB_RESPONSE; |
| |
| typedef struct tagIMAP_STATUS_RESPONSE |
| { |
| LPSTR pszMailboxName; |
| BOOL fMessages; |
| DWORD dwMessages; |
| BOOL fRecent; |
| DWORD dwRecent; |
| BOOL fUIDNext; |
| DWORD dwUIDNext; |
| BOOL fUIDValidity; |
| DWORD dwUIDValidity; |
| BOOL fUnseen; |
| DWORD dwUnseen; |
| } IMAP_STATUS_RESPONSE; |
| |
| typedef struct tagAPPEND_PROGRESS |
| { |
| DWORD dwUploaded; |
| DWORD dwTotal; |
| } APPEND_PROGRESS; |
| |
| typedef [switch_type(IMAP_RESPONSE_TYPE)] union tagIMAP_RESPONSE_DATA |
| { |
| [case (irtMAILBOX_UPDATE)] MBOX_MSGCOUNT *pmcMsgCount; |
| [case (irtDELETED_MSG)] DWORD dwDeletedMsgSeqNum; |
| [case (irtFETCH_BODY)] FETCH_BODY_PART *pFetchBodyPart; |
| [case (irtUPDATE_MSG)] FETCH_CMD_RESULTS *pFetchResults; |
| [case (irtAPPLICABLE_FLAGS, irtPERMANENT_FLAGS)] IMAP_MSGFLAGS imfImapMessageFlags; |
| [case (irtUIDVALIDITY)] DWORD dwUIDValidity; |
| [case (irtREADWRITE_STATUS)] BOOL bReadWrite; |
| [case (irtSEARCH)] IRangeList *prlSearchResults; |
| [case (irtMAILBOX_LISTING)] IMAP_LISTLSUB_RESPONSE illrdMailboxListing; |
| [case (irtMAILBOX_STATUS)] IMAP_STATUS_RESPONSE *pisrStatusResponse; |
| [case (irtAPPEND_PROGRESS)] APPEND_PROGRESS *papAppendProgress; |
| [case (irtUPDATE_MSG_EX)] FETCH_CMD_RESULTS_EX *pFetchResultsEx; |
| } IMAP_RESPONSE_DATA; |
| |
| typedef struct tagIMAP_RESPONSE |
| { |
| WPARAM wParam; |
| LPARAM lParam; |
| HRESULT hrResult; |
| LPSTR lpszResponseText; |
| IMAP_RESPONSE_TYPE irtResponseType; |
| [switch_is(irtResponseType)] IMAP_RESPONSE_DATA irdResponseData; |
| } IMAP_RESPONSE; |
| |
| HRESULT OnResponse([in] const IMAP_RESPONSE *pirIMAPResponse); |
| } |
| |
| [ |
| object, |
| uuid(E9E9D8A8-4EDD-11d0-874F-00AA00530EE9), |
| local, |
| ] |
| interface IIMAPTransport : IInternetTransport |
| { |
| const DWORD IMAP_CAPABILITY_IMAP4 = 0x1; |
| const DWORD IMAP_CAPABILITY_IMAP4rev1 = 0x2; |
| const DWORD IMAP_CAPABILITY_IDLE = 0x4; |
| const DWORD IMAP_CAPABILITY_ALLFLAGS = 0x7; |
| |
| HRESULT InitNew( |
| [in] LPSTR pszLogFilePath, |
| [in] IIMAPCallback *pCBHandler); |
| |
| HRESULT NewIRangeList( |
| [out] IRangeList **pprlNewRangeList); |
| |
| HRESULT Capability( |
| [out] DWORD *pdwCapabilityFlags); |
| |
| HRESULT Select( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT Examine( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT Create( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT Delete( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT Rename( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName, |
| [in] LPSTR lpszNewMailboxName); |
| |
| HRESULT Subscribe( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT Unsubscribe( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT List( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxNameReference, |
| [in] LPSTR lpszMailboxNamePattern); |
| |
| HRESULT Lsub( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxNameReference, |
| [in] LPSTR lpszMailboxNamePattern); |
| |
| HRESULT Append( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszMailboxName, |
| [in] LPSTR lpszMessageFlags, |
| [in] FILETIME ftMessageDateTime, |
| [in] LPSTREAM lpstmMessageToSave); |
| |
| HRESULT Close( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler); |
| |
| HRESULT Expunge( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler); |
| |
| HRESULT Search( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR lpszSearchCriteria, |
| [in] boolean bReturnUIDs, |
| [in] IRangeList *pMsgRange, |
| [in] boolean bUIDRangeList); |
| |
| HRESULT Fetch( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] IRangeList *pMsgRange, |
| [in] boolean bUIDMsgRange, |
| [in] LPSTR lpszFetchArgs); |
| |
| HRESULT Store( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] IRangeList *pMsgRange, |
| [in] boolean bUIDRangeList, |
| [in] LPSTR lpszStoreArgs); |
| |
| HRESULT Copy( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] IRangeList *pMsgRange, |
| [in] boolean bUIDRangeList, |
| [in] LPSTR lpszMailboxName); |
| |
| HRESULT Noop( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler); |
| |
| HRESULT ResizeMsgSeqNumTable( |
| [in] DWORD dwSizeOfMbox); |
| |
| HRESULT UpdateSeqNumToUID( |
| [in] DWORD dwMsgSeqNum, |
| [in] DWORD dwUID); |
| |
| HRESULT RemoveSequenceNum( |
| [in] DWORD dwDeletedMsgSeqNum); |
| |
| HRESULT MsgSeqNumToUID( |
| [in] DWORD dwMsgSeqNum, |
| [out] DWORD *pdwUID); |
| |
| HRESULT GetMsgSeqNumToUIDArray( |
| [out] DWORD **ppdwMsgSeqNumToUIDArray, |
| [out] DWORD *pdwNumberOfElements); |
| |
| HRESULT GetHighestMsgSeqNum( |
| [out] DWORD *pdwHighestMSN); |
| |
| HRESULT ResetMsgSeqNumToUID(); |
| |
| HRESULT SetDefaultCBHandler( |
| [in] IIMAPCallback *pCBHandler); |
| |
| HRESULT Status( |
| [in] WPARAM wParam, |
| [in] LPARAM lParam, |
| [in] IIMAPCallback *pCBHandler, |
| [in] LPSTR pszMailboxName, |
| [in] LPSTR pszStatusCmdArgs); |
| } |
| |
| #if 0 |
| cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);") |
| cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);") |
| cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);") |
| #endif |
| cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);") |
| cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);") |
| cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);") |
| cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);") |