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
10extern "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