+++ /dev/null
-/*
- * 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];
- } DUMMYUNIONNAME;
- } 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];
- } DUMMYUNIONNAME;
- } 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);")