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