1 /* 2 * Copyright (C) 2000 Francois Gouget 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19 #ifndef MAPI_H 20 #define MAPI_H 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /* Some types */ 27 28 #ifndef __LHANDLE 29 #define __LHANDLE 30 typedef ULONG_PTR LHANDLE, *LPLHANDLE; 31 #endif 32 #define lhSessionNull ((LHANDLE)0) 33 34 #ifndef WINE_FLAGS_DEFINED 35 #define WINE_FLAGS_DEFINED 36 typedef ULONG FLAGS; 37 #endif 38 typedef ULONG *LPULONG; 39 40 typedef struct 41 { 42 ULONG ulReserved; 43 ULONG flFlags; 44 ULONG nPosition; 45 LPSTR lpszPathName; 46 LPSTR lpszFileName; 47 LPVOID lpFileType; 48 } MapiFileDesc, *lpMapiFileDesc; 49 50 typedef struct 51 { 52 ULONG ulReserved; 53 ULONG flFlags; 54 ULONG nPosition; 55 PWSTR lpszPathName; 56 PWSTR lpszFileName; 57 PVOID lpFileType; 58 } MapiFileDescW, *lpMapiFileDescW; 59 60 #ifndef MAPI_ORIG 61 #define MAPI_ORIG 0 62 #define MAPI_TO 1 63 #define MAPI_CC 2 64 #define MAPI_BCC 3 65 #endif 66 67 typedef struct 68 { 69 ULONG ulReserved; 70 ULONG ulRecipClass; 71 LPSTR lpszName; 72 LPSTR lpszAddress; 73 ULONG ulEIDSize; 74 LPVOID lpEntryID; 75 } MapiRecipDesc, *lpMapiRecipDesc; 76 77 typedef struct 78 { 79 ULONG ulReserved; 80 ULONG ulRecipClass; 81 PWSTR lpszName; 82 PWSTR lpszAddress; 83 ULONG ulEIDSize; 84 PVOID lpEntryID; 85 } MapiRecipDescW, *lpMapiRecipDescW; 86 87 typedef struct 88 { 89 ULONG ulReserved; 90 LPSTR lpszSubject; 91 LPSTR lpszNoteText; 92 LPSTR lpszMessageType; 93 LPSTR lpszDateReceived; 94 LPSTR lpszConversationID; 95 FLAGS flFlags; 96 lpMapiRecipDesc lpOriginator; 97 ULONG nRecipCount; 98 lpMapiRecipDesc lpRecips; 99 ULONG nFileCount; 100 lpMapiFileDesc lpFiles; 101 } MapiMessage, *lpMapiMessage; 102 103 typedef struct 104 { 105 ULONG ulReserved; 106 PWSTR lpszSubject; 107 PWSTR lpszNoteText; 108 PWSTR lpszMessageType; 109 PWSTR lpszDateReceived; 110 PWSTR lpszConversationID; 111 FLAGS flFlags; 112 lpMapiRecipDescW lpOriginator; 113 ULONG nRecipCount; 114 lpMapiRecipDescW lpRecips; 115 ULONG nFileCount; 116 lpMapiFileDescW lpFiles; 117 } MapiMessageW, *lpMapiMessageW; 118 119 /* Error codes */ 120 121 #ifndef SUCCESS_SUCCESS 122 #define SUCCESS_SUCCESS 0 123 #endif 124 125 #define MAPI_USER_ABORT 1 126 #define MAPI_E_USER_ABORT MAPI_USER_ABORT 127 #define MAPI_E_FAILURE 2 128 #define MAPI_E_LOGON_FAILURE 3 129 #define MAPI_E_LOGIN_FAILURE MAPI_E_LOGON_FAILURE 130 #define MAPI_E_DISK_FULL 4 131 #define MAPI_E_INSUFFICIENT_MEMORY 5 132 #define MAPI_E_ACCESS_DENIED 6 133 #define MAPI_E_TOO_MANY_SESSIONS 8 134 #define MAPI_E_TOO_MANY_FILES 9 135 #define MAPI_E_TOO_MANY_RECIPIENTS 10 136 #define MAPI_E_ATTACHMENT_NOT_FOUND 11 137 #define MAPI_E_ATTACHMENT_OPEN_FAILURE 12 138 #define MAPI_E_ATTACHMENT_WRITE_FAILURE 13 139 #define MAPI_E_UNKNOWN_RECIPIENT 14 140 #define MAPI_E_BAD_RECIPTYPE 15 141 #define MAPI_E_NO_MESSAGES 16 142 #define MAPI_E_INVALID_MESSAGE 17 143 #define MAPI_E_TEXT_TOO_LARGE 18 144 #define MAPI_E_INVALID_SESSION 19 145 #define MAPI_E_TYPE_NOT_SUPPORTED 20 146 #define MAPI_E_AMBIGUOUS_RECIPIENT 21 147 #define MAPI_E_AMBIG_RECIP MAPI_E_AMBIGUOUS_RECIPIENT 148 #define MAPI_E_MESSAGE_IN_USE 22 149 #define MAPI_E_NETWORK_FAILURE 23 150 #define MAPI_E_INVALID_EDITFIELDS 24 151 #define MAPI_E_INVALID_RECIPS 25 152 #define MAPI_E_NOT_SUPPORTED 26 153 #define MAPI_E_UNICODE_NOT_SUPPORTED 27 154 155 156 /* MAPILogon */ 157 158 #ifndef MAPI_LOGON_UI 159 #define MAPI_LOGON_UI 0x00000001 160 #endif 161 #ifndef MAPI_NEW_SESSION 162 #define MAPI_NEW_SESSION 0x00000002 163 #endif 164 #ifndef MAPI_EXTENDED 165 #define MAPI_EXTENDED 0x00000020 166 #endif 167 #ifndef MAPI_FORCE_DOWNLOAD 168 #define MAPI_FORCE_DOWNLOAD 0x00001000 169 #endif 170 #ifndef MAPI_PASSWORD_UI 171 #define MAPI_PASSWORD_UI 0x00020000 172 #endif 173 174 175 /* MAPISendMail */ 176 177 #define MAPI_DIALOG 0x00000008 178 179 /* MAPISendMailW */ 180 181 #define MAPI_FORCE_UNICODE 0x00040000 182 183 184 /* API typedefs and prototypes */ 185 186 typedef ULONG (WINAPI MAPIADDRESS)(LHANDLE,ULONG_PTR,LPSTR,ULONG,LPSTR,ULONG,lpMapiRecipDesc,FLAGS,ULONG,LPULONG,lpMapiRecipDesc*); 187 typedef MAPIADDRESS *LPMAPIADDRESS; 188 MAPIADDRESS MAPIAddress; 189 190 typedef ULONG (WINAPI MAPIDELETEMAIL)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG); 191 typedef MAPIDELETEMAIL *LPMAPIDELETEMAIL; 192 MAPIDELETEMAIL MAPIDeleteMail; 193 194 typedef ULONG (WINAPI MAPIDETAILS)(LHANDLE,ULONG_PTR,lpMapiRecipDesc,FLAGS,ULONG); 195 typedef MAPIDETAILS *LPMAPIDETAILS; 196 MAPIDETAILS MAPIDetails; 197 198 typedef ULONG (WINAPI MAPIFINDNEXT)(LHANDLE,ULONG_PTR,LPSTR,LPSTR,FLAGS,ULONG,LPSTR); 199 typedef MAPIFINDNEXT *LPMAPIFINDNEXT; 200 MAPIFINDNEXT MAPIFindNext; 201 202 #ifndef MAPIFREEBUFFER_DEFINED 203 #define MAPIFREEBUFFER_DEFINED 204 typedef ULONG (WINAPI MAPIFREEBUFFER)(LPVOID); 205 typedef MAPIFREEBUFFER *LPMAPIFREEBUFFER; 206 MAPIFREEBUFFER MAPIFreeBuffer; 207 #endif 208 209 typedef ULONG (WINAPI MAPILOGOFF)(LHANDLE,ULONG_PTR,FLAGS,ULONG); 210 typedef MAPILOGOFF *LPMAPILOGOFF; 211 MAPILOGOFF MAPILogoff; 212 213 typedef ULONG (WINAPI MAPILOGON)(ULONG_PTR,LPSTR,LPSTR,FLAGS,ULONG,LPLHANDLE); 214 typedef MAPILOGON *LPMAPILOGON; 215 MAPILOGON MAPILogon; 216 217 typedef ULONG (WINAPI MAPIREADMAIL)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG,lpMapiMessage); 218 typedef MAPIREADMAIL *LPMAPIREADMAIL; 219 MAPIREADMAIL MAPIReadMail; 220 221 typedef ULONG (WINAPI MAPIRESOLVENAME)(LHANDLE,ULONG_PTR,LPSTR,FLAGS,ULONG,lpMapiRecipDesc*); 222 typedef MAPIRESOLVENAME *LPMAPIRESOLVENAME; 223 MAPIRESOLVENAME MAPIResolveName; 224 225 typedef ULONG (WINAPI MAPISAVEMAIL)(LHANDLE,ULONG_PTR,lpMapiMessage,FLAGS,ULONG,LPSTR); 226 typedef MAPISAVEMAIL *LPMAPISAVEMAIL; 227 MAPISAVEMAIL MAPISaveMail; 228 229 typedef ULONG (WINAPI MAPISENDDOCUMENTS)(ULONG_PTR,LPSTR,LPSTR,LPSTR,ULONG); 230 typedef MAPISENDDOCUMENTS *LPMAPISENDDOCUMENTS; 231 MAPISENDDOCUMENTS MAPISendDocuments; 232 233 typedef ULONG (WINAPI MAPISENDMAIL)(LHANDLE,ULONG_PTR,lpMapiMessage,FLAGS,ULONG); 234 typedef MAPISENDMAIL *LPMAPISENDMAIL; 235 MAPISENDMAIL MAPISendMail; 236 237 typedef ULONG (WINAPI MAPISENDMAILW)(LHANDLE,ULONG_PTR,lpMapiMessageW,FLAGS,ULONG); 238 typedef MAPISENDMAILW *LPMAPISENDMAILW; 239 MAPISENDMAILW MAPISendMailW; 240 241 #ifdef __cplusplus 242 } 243 #endif 244 245 #endif /* MAPI_H */ 246