1 /***********************************************************************\ 2 * mapi.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * by Stewart Gordon * 8 * * 9 * Placed into public domain * 10 \***********************************************************************/ 11 module win32.mapi; 12 version(Windows): 13 14 private import win32.windef; 15 16 // FIXME: check types and grouping of constants 17 18 enum { 19 SUCCESS_SUCCESS, 20 MAPI_USER_ABORT, 21 MAPI_E_USER_ABORT = MAPI_USER_ABORT, 22 MAPI_E_FAILURE, 23 MAPI_E_LOGIN_FAILURE, 24 MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, 25 MAPI_E_DISK_FULL = 4, 26 MAPI_E_INSUFFICIENT_MEMORY, 27 MAPI_E_ACCESS_DENIED, 28 MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 29 MAPI_E_TOO_MANY_SESSIONS = 8, 30 MAPI_E_TOO_MANY_FILES, 31 MAPI_E_TOO_MANY_RECIPIENTS, 32 MAPI_E_ATTACHMENT_NOT_FOUND, 33 MAPI_E_ATTACHMENT_OPEN_FAILURE, 34 MAPI_E_ATTACHMENT_WRITE_FAILURE, 35 MAPI_E_UNKNOWN_RECIPIENT, 36 MAPI_E_BAD_RECIPTYPE, 37 MAPI_E_NO_MESSAGES, 38 MAPI_E_INVALID_MESSAGE, 39 MAPI_E_TEXT_TOO_LARGE, 40 MAPI_E_INVALID_SESSION, 41 MAPI_E_TYPE_NOT_SUPPORTED, 42 MAPI_E_AMBIGUOUS_RECIPIENT, 43 MAPI_E_AMBIGUOUS_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT, 44 MAPI_E_MESSAGE_IN_USE, 45 MAPI_E_NETWORK_FAILURE, 46 MAPI_E_INVALID_EDITFIELDS, 47 MAPI_E_INVALID_RECIPS, 48 MAPI_E_NOT_SUPPORTED // = 26 49 } 50 51 enum { 52 MAPI_ORIG, 53 MAPI_TO, 54 MAPI_CC, 55 MAPI_BCC 56 } 57 58 const MAPI_LOGON_UI = 0x0001; 59 const MAPI_NEW_SESSION = 0x0002; 60 const MAPI_FORCE_DOWNLOAD = 0x1000; 61 const MAPI_LOGOFF_SHARED = 0x0001; 62 const MAPI_LOGOFF_UI = 0x0002; 63 const MAPI_DIALOG = 0x0008; 64 const MAPI_UNREAD_ONLY = 0x0020; 65 const MAPI_LONG_MSGID = 0x4000; 66 const MAPI_GUARANTEE_FIFO = 0x0100; 67 const MAPI_ENVELOPE_ONLY = 0x0040; 68 const MAPI_PEEK = 0x0080; 69 const MAPI_BODY_AS_FILE = 0x0200; 70 const MAPI_SUPPRESS_ATTACH = 0x0800; 71 const MAPI_AB_NOMODIFY = 0x0400; 72 const MAPI_OLE = 0x0001; 73 const MAPI_OLE_STATIC = 0x0002; 74 const MAPI_UNREAD = 0x0001; 75 const MAPI_RECEIPT_REQUESTED = 0x0002; 76 const MAPI_SENT = 0x0004; 77 78 alias uint FLAGS, LHANDLE; 79 alias uint* LPLHANDLE, LPULONG; 80 81 struct MapiRecipDesc { 82 ULONG ulReserved; 83 ULONG ulRecipClass; 84 LPSTR lpszName; 85 LPSTR lpszAddress; 86 ULONG ulEIDSize; 87 LPVOID lpEntryID; 88 } 89 alias MapiRecipDesc* lpMapiRecipDesc; 90 91 struct MapiFileDesc { 92 ULONG ulReserved; 93 ULONG flFlags; 94 ULONG nPosition; 95 LPSTR lpszPathName; 96 LPSTR lpszFileName; 97 LPVOID lpFileType; 98 } 99 alias MapiFileDesc* lpMapiFileDesc; 100 101 struct MapiFileTagExt { 102 ULONG ulReserved; 103 ULONG cbTag; 104 LPBYTE lpTag; 105 ULONG cbEncoding; 106 LPBYTE lpEncoding; 107 } 108 alias MapiFileTagExt* lpMapiFileTagExt; 109 110 struct MapiMessage { 111 ULONG ulReserved; 112 LPSTR lpszSubject; 113 LPSTR lpszNoteText; 114 LPSTR lpszMessageType; 115 LPSTR lpszDateReceived; 116 LPSTR lpszConversationID; 117 FLAGS flFlags; 118 lpMapiRecipDesc lpOriginator; 119 ULONG nRecipCount; 120 lpMapiRecipDesc lpRecips; 121 ULONG nFileCount; 122 lpMapiFileDesc lpFiles; 123 } 124 alias MapiMessage* lpMapiMessage; 125 126 extern (Pascal) { 127 ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); 128 ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); 129 ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); 130 ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); 131 ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); 132 ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, 133 lpMapiRecipDesc*); 134 ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, 135 lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); 136 ULONG MAPIFreeBuffer(LPVOID); 137 ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); 138 ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, 139 ULONG, LPSTR); 140 ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); 141 ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); 142 // Netscape extensions 143 ULONG MAPIGetNetscapeVersion(); 144 ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); 145 146 // Handles for use with GetProcAddress 147 alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) 148 LPMAPILOGON; 149 alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) 150 LPMAPISENDMAIL; 151 alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) 152 LPMAPISENDDOCUMENTS; 153 alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) 154 LPMAPIREADMAIL; 155 alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) 156 LPMAPIFINDNEXT; 157 alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, 158 lpMapiRecipDesc*) LPMAPIRESOLVENAME; 159 alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, 160 lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; 161 alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; 162 alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) 163 LPMAPIDETAILS; 164 alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) 165 LPMAPISAVEMAIL; 166 alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) 167 LPMAPIDELETEMAIL; 168 alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; 169 }