MqMail.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:8k
- /*++
- Copyright (c) 1996-1999 Microsoft Corporation
- Module Name:
- mqmail.h
- Abstract:
- Master include file for Message Queue Exchange Connector
- or MAPI applications
- --*/
- #ifndef _MQMAIL_H
- #define _MQMAIL_H
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif // __cplusplus
- //----------------------------------------------------------------
- //mail type-id for queues
- //----------------------------------------------------------------
- #include <windows.h>
- #include <windowsx.h>
- #include <ole2.h>
- /* 5eadc0d0-7182-11cf-a8ff-0020afb8fb50 */
- DEFINE_GUID(CLSID_MQMailQueueType,
- 0x5eadc0d0,
- 0x7182, 0x11cf,
- 0xa8, 0xff, 0x00, 0x20, 0xaf, 0xb8, 0xfb, 0x50);
- //----------------------------------------------------------------
- //recipient type (to, cc, bcc)
- //----------------------------------------------------------------
- typedef enum MQMailRecipType_enum
- {
- MQMailRecip_TO,
- MQMailRecip_CC,
- MQMailRecip_BCC,
- } MQMailRecipType;
- //----------------------------------------------------------------
- //recipient data
- //----------------------------------------------------------------
- typedef struct MQMailRecip_tag
- {
- LPSTR szName; //display name of recipient
- LPSTR szQueueLabel; //queue label of recipient
- LPSTR szAddress; //address, queue-label or user@queue-label
- MQMailRecipType iType; //recipient type (to, cc, bcc)
- LPFILETIME pftDeliveryTime; //delivery time (incase in a delivery report recipient list)
- LPSTR szNonDeliveryReason;//non-delivery reason (incase in a non-delivery report recipient list)
- } MQMailRecip, FAR * LPMQMailRecip;
- //----------------------------------------------------------------
- //recipient list
- //----------------------------------------------------------------
- typedef struct MQMailRecipList_tag
- {
- ULONG cRecips; //number of recips
- LPMQMailRecip FAR * apRecip; //pointer to a block of recip pointers
- } MQMailRecipList, FAR * LPMQMailRecipList;
- //----------------------------------------------------------------
- //types of value a form field can have
- //----------------------------------------------------------------
- typedef enum MQMailFormFieldType_enum
- {
- MQMailFormField_BOOL, //boolean data
- MQMailFormField_STRING, //string data
- MQMailFormField_LONG, //long data
- MQMailFormField_CURRENCY, //currency data
- MQMailFormField_DOUBLE, //double data
- } MQMailFormFieldType;
- //----------------------------------------------------------------
- //union of available types of values
- //----------------------------------------------------------------
- typedef union MQMailFormFieldData_tag
- {
- BOOL b; //use when type is MQMailFormField_BOOL
- LPSTR lpsz; //use when type is MQMailFormField_STRING
- LONG l; //use when type is MQMailFormField_LONG
- CY cy; //use when type is MQMailFormField_CURRENCY
- double dbl; //use when type is MQMailFormField_DOUBLE
- } MQMailFormFieldData, FAR * LPMQMailFormFieldData;
- //----------------------------------------------------------------
- //form field
- //----------------------------------------------------------------
- typedef struct MQMailFormField_tag
- {
- LPSTR szName; //name of field
- MQMailFormFieldType iType; //type of value (boolean, string)
- MQMailFormFieldData Value; //value (union of available types)
- } MQMailFormField, FAR * LPMQMailFormField;
- //----------------------------------------------------------------
- //list of form fields
- //----------------------------------------------------------------
- typedef struct MQMailFormFieldList_tag
- {
- ULONG cFields; //number of fields
- LPMQMailFormField FAR * apField; //pointer to a block of field pointers
- } MQMailFormFieldList, FAR * LPMQMailFormFieldList;
- //----------------------------------------------------------------
- //types of EMail
- //----------------------------------------------------------------
- typedef enum MQMailEMailType_enum
- {
- MQMailEMail_MESSAGE, //text message
- MQMailEMail_FORM, //form with fields
- MQMailEMail_TNEF, //tnef data
- MQMailEMail_DELIVERY_REPORT, //delivery report
- MQMailEMail_NON_DELIVERY_REPORT,//non-delivery report
- } MQMailEMailType;
- //----------------------------------------------------------------
- //message specific data
- //----------------------------------------------------------------
- typedef struct MQMailMessageData_tag
- {
- LPSTR szText; //message text
- } MQMailMessageData, FAR * LPMQMailMessageData;
- //----------------------------------------------------------------
- //form specific data
- //----------------------------------------------------------------
- typedef struct MQMailFormData_tag
- {
- LPSTR szName; //name of form
- LPMQMailFormFieldList pFields; //list of fields
- } MQMailFormData, FAR * LPMQMailFormData;
- //----------------------------------------------------------------
- //tnef specific data
- //----------------------------------------------------------------
- typedef struct MQMailTnefData_tag
- {
- ULONG cbData; //size of tnef data
- LPBYTE lpbData; //tnef data buffer
- } MQMailTnefData, FAR * LPMQMailTnefData;
- //----------------------------------------------------------------
- //delivery report specific data
- //----------------------------------------------------------------
- typedef struct MQMailDeliveryReportData_tag
- {
- LPMQMailRecipList pDeliveredRecips; //delivered recipients
- LPSTR szOriginalSubject; //original mail subject
- LPFILETIME pftOriginalDate; //original mail sending time
- } MQMailDeliveryReportData, FAR * LPMQMailDeliveryReportData;
- //----------------------------------------------------------------
- //non-delivery report specific data
- //----------------------------------------------------------------
- typedef struct MQMailEMail_tag MQMailEMail, FAR * LPMQMailEMail;
- typedef struct MQMailNonDeliveryReportData_tag
- {
- LPMQMailRecipList pNonDeliveredRecips;//non-delivered recipients
- LPMQMailEMail pOriginalEMail; //original mail
- } MQMailNonDeliveryReportData, FAR * LPMQMailNonDeliveryReportData;
- //----------------------------------------------------------------
- //EMail basic data and specific form/message data
- //----------------------------------------------------------------
- typedef struct MQMailEMail_tag
- {
- LPMQMailRecip pFrom; //sender
- LPSTR szSubject; //subject
- BOOL fRequestDeliveryReport; //request delivery report
- BOOL fRequestNonDeliveryReport; //request non-delivery report
- LPFILETIME pftDate; //sending time
- LPMQMailRecipList pRecips; //recipients
- MQMailEMailType iType; //type of EMail (message, form, etc...)
- union //union of available EMail types
- {
- MQMailFormData form; //use when type is MQMailEMail_FORM
- MQMailMessageData message; //use when type is MQMailEMail_MESSAGE
- MQMailTnefData tnef; //use when type is MQMailEMail_TNEF
- MQMailDeliveryReportData DeliveryReport; //use when type is MQMailEMail_DELIVERY_REPORT
- MQMailNonDeliveryReportData NonDeliveryReport; //use when type is MQMailEMail_NON_DELIVERY_REPORT
- };
- LPVOID pReserved; //should be set to NULL
- } MQMailEMail, FAR * LPMQMailEMail;
- //----------------------------------------------------------------
- //creates a falcon message body out of an EMail structure
- //----------------------------------------------------------------
- STDAPI MQMailComposeBody(LPMQMailEMail pEMail,
- ULONG FAR * pcbBuffer,
- LPBYTE FAR * ppbBuffer);
- //----------------------------------------------------------------
- //creates an EMail structure out of a falcon message body
- //----------------------------------------------------------------
- STDAPI MQMailParseBody(ULONG cbBuffer,
- LPBYTE pbBuffer,
- LPMQMailEMail FAR * ppEMail);
- //----------------------------------------------------------------
- //frees memory that was allocated by MQMail like *ppEmail in MQMailParseBody
- // or *ppBuffer in MQMailComposeBody.
- //----------------------------------------------------------------
- STDAPI_(void) MQMailFreeMemory(LPVOID lpBuffer);
- #ifdef __cplusplus
- }
- #endif
- #endif //_MQMAIL_H