master
  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