1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _MQMAIL_H 7 #define _MQMAIL_H 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 #include <windows.h> 14 #include <windowsx.h> 15 #include <ole2.h> 16 17 DEFINE_GUID(CLSID_MQMailQueueType,0x5eadc0d0,0x7182,0x11cf,0xa8,0xff,0x00,0x20,0xaf,0xb8,0xfb,0x50); 18 19 typedef enum MQMailRecipType_enum { 20 MQMailRecip_TO,MQMailRecip_CC,MQMailRecip_BCC 21 } MQMailRecipType; 22 23 typedef struct MQMailRecip_tag { 24 LPSTR szName; 25 LPSTR szQueueLabel; 26 LPSTR szAddress; 27 MQMailRecipType iType; 28 LPFILETIME pftDeliveryTime; 29 LPSTR szNonDeliveryReason; 30 } MQMailRecip,*LPMQMailRecip; 31 32 typedef struct MQMailRecipList_tag { 33 ULONG cRecips; 34 LPMQMailRecip *apRecip; 35 } MQMailRecipList,*LPMQMailRecipList; 36 37 typedef enum MQMailFormFieldType_enum { 38 MQMailFormField_BOOL,MQMailFormField_STRING,MQMailFormField_LONG,MQMailFormField_CURRENCY,MQMailFormField_DOUBLE 39 } MQMailFormFieldType; 40 41 typedef union MQMailFormFieldData_tag { 42 WINBOOL b; 43 LPSTR lpsz; 44 LONG l; 45 CY cy; 46 double dbl; 47 } MQMailFormFieldData,*LPMQMailFormFieldData; 48 49 typedef struct MQMailFormField_tag { 50 LPSTR szName; 51 MQMailFormFieldType iType; 52 MQMailFormFieldData Value; 53 } MQMailFormField,*LPMQMailFormField; 54 55 typedef struct MQMailFormFieldList_tag { 56 ULONG cFields; 57 LPMQMailFormField *apField; 58 } MQMailFormFieldList,*LPMQMailFormFieldList; 59 60 typedef enum MQMailEMailType_enum { 61 MQMailEMail_MESSAGE,MQMailEMail_FORM,MQMailEMail_TNEF,MQMailEMail_DELIVERY_REPORT,MQMailEMail_NON_DELIVERY_REPORT 62 } MQMailEMailType; 63 64 typedef struct MQMailMessageData_tag { 65 LPSTR szText; 66 } MQMailMessageData,*LPMQMailMessageData; 67 68 typedef struct MQMailFormData_tag { 69 LPSTR szName; 70 LPMQMailFormFieldList pFields; 71 } MQMailFormData,*LPMQMailFormData; 72 73 typedef struct MQMailTnefData_tag { 74 ULONG cbData; 75 LPBYTE lpbData; 76 } MQMailTnefData,*LPMQMailTnefData; 77 78 typedef struct MQMailDeliveryReportData_tag { 79 LPMQMailRecipList pDeliveredRecips; 80 LPSTR szOriginalSubject; 81 LPFILETIME pftOriginalDate; 82 } MQMailDeliveryReportData,*LPMQMailDeliveryReportData; 83 84 typedef struct MQMailEMail_tag MQMailEMail,*LPMQMailEMail; 85 typedef struct MQMailNonDeliveryReportData_tag { 86 LPMQMailRecipList pNonDeliveredRecips; 87 LPMQMailEMail pOriginalEMail; 88 } MQMailNonDeliveryReportData,*LPMQMailNonDeliveryReportData; 89 90 typedef struct MQMailEMail_tag { 91 LPMQMailRecip pFrom; 92 LPSTR szSubject; 93 WINBOOL fRequestDeliveryReport; 94 WINBOOL fRequestNonDeliveryReport; 95 LPFILETIME pftDate; 96 LPMQMailRecipList pRecips; 97 MQMailEMailType iType; 98 __C89_NAMELESS union { 99 MQMailFormData form; 100 MQMailMessageData message; 101 MQMailTnefData tnef; 102 MQMailDeliveryReportData DeliveryReport; 103 MQMailNonDeliveryReportData NonDeliveryReport; 104 }; 105 LPVOID pReserved; 106 } MQMailEMail,*LPMQMailEMail; 107 108 STDAPI MQMailComposeBody(LPMQMailEMail pEMail,ULONG *pcbBuffer,LPBYTE *ppbBuffer); 109 STDAPI MQMailParseBody(ULONG cbBuffer,LPBYTE pbBuffer,LPMQMailEMail *ppEMail); 110 STDAPI_(void) MQMailFreeMemory(LPVOID lpBuffer); 111 112 #ifdef __cplusplus 113 } 114 #endif 115 #endif 116