Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

754 lines
26 KiB

  1. /*
  2. @doc MAILMSG PROPERTIES
  3. @module mailmsgprops.h | MailMsg Properties for SMTP and NNTP
  4. */
  5. /*++
  6. Copyright (c) 1999 Microsoft Corporation
  7. Module Name:
  8. mailmsgprops.h
  9. Abstract:
  10. This module contains the definitions for the MailMsg
  11. Object property ID's.
  12. --*/
  13. #ifndef __MAILMSGPROPS_H__
  14. #define __MAILMSGPROPS_H__
  15. /*=======================================================================*/
  16. // These macros are used to define the tables of property ID's.
  17. #define IMMPID_START_LIST(name,start,guid) struct __declspec(uuid(guid)) tagIMMPID_##name##_STRUCT;\
  18. typedef enum tagIMMPID_##name##_ENUM {\
  19. IMMPID_##name##_BEFORE__ = (start)-1,
  20. #define IMMPID_END_LIST(name) IMMPID_##name##_AFTER__\
  21. } IMMPID_##name##_ENUM;
  22. /*=======================================================================*/
  23. // These are the per-message properties.
  24. IMMPID_START_LIST(MP,0x1000,"13384CF0-B3C4-11d1-AA92-00AA006BC80B")
  25. // @const IMMPID | IMMPID_MP_RECIPIENT_LIST |
  26. // *** OBSOLETE ***
  27. IMMPID_MP_RECIPIENT_LIST,
  28. // @const IMMPID | IMMPID_MP_CONTENT_FILE_NAME |
  29. // *** OBSOLETE ***
  30. IMMPID_MP_CONTENT_FILE_NAME,
  31. // @const IMMPID | IMMPID_MP_SENDER_ADDRESS_SMTP |
  32. // ANSI String - SMTP Address of sender
  33. IMMPID_MP_SENDER_ADDRESS_SMTP,
  34. // @const IMMPID | IMMPID_MP_SENDER_ADDRESS_X500 |
  35. // ANSI String - X500 Address of sender
  36. IMMPID_MP_SENDER_ADDRESS_X500,
  37. // @const IMMPID | IMMPID_MP_SENDER_ADDRESS_X400 |
  38. // String - X400 Address of sender
  39. IMMPID_MP_SENDER_ADDRESS_X400,
  40. // @const IMMPID | IMMPID_MP_SENDER_ADDRESS_LEGACY_EX_DN |
  41. // String - Legacy DN Address of sender
  42. IMMPID_MP_SENDER_ADDRESS_LEGACY_EX_DN,
  43. // @const IMMPID | IMMPID_MP_DOMAIN_LIST |
  44. // *** OBSOLETE ***
  45. IMMPID_MP_DOMAIN_LIST,
  46. // @const IMMPID | IMMPID_MP_PICKUP_FILE_NAME |
  47. // ANSI String - Filename of msg file in pickup directory
  48. IMMPID_MP_PICKUP_FILE_NAME,
  49. // @const IMMPID | IMMPID_MP_AUTHENTICATED_USER_NAME |
  50. // *** OBSOLETE ***
  51. IMMPID_MP_AUTHENTICATED_USER_NAME,
  52. // @const IMMPID | IMMPID_MP_CONNECTION_IP_ADDRESS |
  53. // ANSI String - IP address of MTA or client that submitted this message
  54. IMMPID_MP_CONNECTION_IP_ADDRESS,
  55. // @const IMMPID | IMMPID_MP_HELO_DOMAIN |
  56. // ANSI String - Domain name used in HELO/EHLO when message was submitted
  57. IMMPID_MP_HELO_DOMAIN,
  58. // @const IMMPID | IMMPID_MP_EIGHTBIT_MIME_OPTION |
  59. // BOOL - TRUE if message body is 8-bit MIME
  60. IMMPID_MP_EIGHTBIT_MIME_OPTION,
  61. // @const IMMPID | IMMPID_MP_CHUNKING_OPTION |
  62. // *** OBSOLETE ***
  63. IMMPID_MP_CHUNKING_OPTION,
  64. // @const IMMPID | IMMPID_MP_BINARYMIME_OPTION |
  65. // BOOL - TRUE if message body is binary MIME
  66. IMMPID_MP_BINARYMIME_OPTION,
  67. // @const IMMPID | IMMPID_MP_REMOTE_AUTHENTICATION_TYPE |
  68. // *** OBSOLETE ***
  69. IMMPID_MP_REMOTE_AUTHENTICATION_TYPE,
  70. // @const IMMPID | IMMPID_MP_ERROR_CODE |
  71. // *** OBSOLETE ***
  72. IMMPID_MP_ERROR_CODE,
  73. // @const IMMPID | IMMPID_MP_DSN_ENVID_VALUE |
  74. // Value of RFC1891 ENVID of submitted message
  75. IMMPID_MP_DSN_ENVID_VALUE,
  76. // @const IMMPID | IMMPID_MP_DSN_RET_VALUE |
  77. // ANSI String of what follows ESMTP RET
  78. IMMPID_MP_DSN_RET_VALUE,
  79. // @const IMMPID | IMMPID_MP_REMOTE_SERVER_DSN_CAPABLE |
  80. // *** OBSOLETE ***
  81. IMMPID_MP_REMOTE_SERVER_DSN_CAPABLE,
  82. // @const IMMPID | IMMPID_MP_ARRIVAL_TIME |
  83. // FILETIME that message arrived in system
  84. IMMPID_MP_ARRIVAL_TIME,
  85. // @const IMMPID | IMMPID_MP_MESSAGE_STATUS |
  86. // MP_STATUS_* value describing status of message system
  87. IMMPID_MP_MESSAGE_STATUS,
  88. // @const IMMPID | IMMPID_MP_EXPIRE_DELAY |
  89. // FILETIME of Delay DSN Expiration
  90. IMMPID_MP_EXPIRE_DELAY,
  91. // @const IMMPID | IMMPID_MP_EXPIRE_NDR |
  92. // FILETIME of NDR DSN Expiration
  93. IMMPID_MP_EXPIRE_NDR,
  94. // @const IMMPID | IMMPID_MP_LOCAL_EXPIRE_DELAY |
  95. // FILETIME of Delay DSN Expiration for local recips
  96. IMMPID_MP_LOCAL_EXPIRE_DELAY,
  97. // @const IMMPID | IMMPID_MP_LOCAL_EXPIRE_NDR |
  98. // FILETIME of NDR DSN Expiration for local recips
  99. IMMPID_MP_LOCAL_EXPIRE_NDR,
  100. // @const IMMPID | IMMPID_MP_ARRIVAL_FILETIME |
  101. // FILETIME when message was submitted to queue
  102. IMMPID_MP_ARRIVAL_FILETIME,
  103. // @const IMMPID | IMMPID_MP_HR_CAT_STATUS |
  104. // HRESULT MsgCat status (ie CAT_W_SOME_UNDELIVERABLE_MSGS)
  105. IMMPID_MP_HR_CAT_STATUS,
  106. // @const IMMPID | IMMPID_MP_MSG_GUID |
  107. // String GUID ID which is only used if you want need to be able to replace
  108. // this message with another newer version. This property is only
  109. // effective when used for a small amount of mail on the server, and is
  110. // best suited for versioned mail (like DS replication).
  111. IMMPID_MP_MSG_GUID,
  112. // @const IMMPID | IMMPID_MP_SUPERSEDES_MSG_GUID |
  113. // String GUID ID which this message superscedes. If a message with with a
  114. // IMMPID_MP_MSG_GUID equal to this property is still on the server, then
  115. // that message will not be sent out.
  116. IMMPID_MP_SUPERSEDES_MSG_GUID,
  117. // @const IMMPID | IMMPID_MP_SCANNED_FOR_CRLF_DOT_CRLF |
  118. // Boolean which tells if the input was scanned for <CRLF>.<CRLF> in the msg
  119. // body
  120. IMMPID_MP_SCANNED_FOR_CRLF_DOT_CRLF,
  121. // @const IMMPID | IMMPID_MP_FOUND_EMBEDDED_CRLF_DOT_CRLF |
  122. // Boolean which tells if the input had any <CRLF>.<CRLF>
  123. //
  124. IMMPID_MP_FOUND_EMBEDDED_CRLF_DOT_CRLF,
  125. // @const IMMPID | IMMPID_MP_MSG_SIZE_HINT |
  126. // Provides an approximate size of the message content. Does not convert
  127. // message, or guarantee accuracy. For an accurate message size (but at
  128. // a higher performance cost) use IMailMsgProperties::GetContentSize.
  129. //
  130. IMMPID_MP_MSG_SIZE_HINT,
  131. // @const IMMPID | IMMPID_MP_RFC822_MSG_ID |
  132. // String -- RFC 822 Message Id header.
  133. IMMPID_MP_RFC822_MSG_ID,
  134. // @const IMMPID | IMMPID_MP_RFC822_MSG_SUBJECT |
  135. // String -- RFC822 subject header
  136. IMMPID_MP_RFC822_MSG_SUBJECT,
  137. // @const IMMPID | IMMPID_MP_RFC822_FROM_ADDRESS |
  138. // String -- RFC822 from address
  139. IMMPID_MP_RFC822_FROM_ADDRESS,
  140. // @const IMMPID | IMMPID_MP_RFC822_TO_ADDRESS |
  141. // String -- RFC822 To address
  142. IMMPID_MP_RFC822_TO_ADDRESS,
  143. // @const IMMPID | IMMPID_MP_RFC822_CC_ADDRESS |
  144. // String -- RFC822 Cc address
  145. IMMPID_MP_RFC822_CC_ADDRESS,
  146. // @const IMMPID | IMMPID_MP_RFC822_BCC_ADDRESS |
  147. // String -- RFC822 Bcc address
  148. IMMPID_MP_RFC822_BCC_ADDRESS,
  149. // @const IMMPID | IMMPID_MP_CONNECTION_SERVER_IP_ADDRESS |
  150. // String -- server IP Address
  151. IMMPID_MP_CONNECTION_SERVER_IP_ADDRESS,
  152. // @const IMMPID | IMMPID_MP_SERVER_NAME |
  153. // String -- server name
  154. IMMPID_MP_SERVER_NAME,
  155. // @const IMMPID | IMMPID_MP_SERVER_VERSION |
  156. // String -- server version
  157. IMMPID_MP_SERVER_VERSION,
  158. // @const IMMPID | IMMPID_MP_NUM_RECIPIENTS |
  159. // DWORD -- number of recipients
  160. IMMPID_MP_NUM_RECIPIENTS,
  161. // @const IMMPID | IMMPID_MP_X_PRIORITY |
  162. // DWORD -- the priority of message
  163. IMMPID_MP_X_PRIORITY,
  164. // @const IMMPID | IMMPID_MP_FROM_ADDRESS |
  165. // String -- From: address, in form format:address
  166. // (ie, smtp:[email protected]). RFC822 address comments are stripped
  167. IMMPID_MP_FROM_ADDRESS,
  168. // @const IMMPID | IMMPID_MP_SENDER_ADDRESS |
  169. // String -- Sender: address, in form format:address
  170. // (ie, smtp:[email protected]). RFC822 address comments are stripped
  171. IMMPID_MP_SENDER_ADDRESS,
  172. // @const IMMPID | IMMPID_MP_DEFERRED_DELIVERY_FILETIME |
  173. // FILETIME -- Universal time to wait until before allowing
  174. // message to be delivered.
  175. IMMPID_MP_DEFERRED_DELIVERY_FILETIME,
  176. // @const IMMPID | IMMPID_MP_SENDER_ADDRESS_OTHER |
  177. // ANSI String - with the format "type:address"
  178. IMMPID_MP_SENDER_ADDRESS_OTHER,
  179. // @const IMMPID | IMMPID_MP_ORIGINAL_ARRIVAL_TIME |
  180. // FILETIME that message arrived in first exchange system
  181. IMMPID_MP_ORIGINAL_ARRIVAL_TIME,
  182. // @const IMMPID | IMMPID_MP_MSG_CLASS |
  183. // The Message class of the mail, e.g. syste, replication, etc...
  184. IMMPID_MP_MSGCLASS,
  185. // @const IMMPID | IMMPID_MP_CONTENT_TYPE |
  186. // The content type of message.
  187. // ANSI STRING.
  188. IMMPID_MP_CONTENT_TYPE,
  189. //@const IMMPID | IMMPID_MP_ENCRYPTION_TYPE |
  190. // DWORD - 0, no encryption
  191. // 1, signed only
  192. // 2, encrypted
  193. IMMPID_MP_ENCRYPTION_TYPE,
  194. //@const IMMPID | IMMPID_MP_CONNECTION_SERVER_PORT |
  195. // DWORD - Port (if any) that this message was submitted on
  196. IMMPID_MP_CONNECTION_SERVER_PORT,
  197. //@const IMMPID | IMMPID_MP_CLIENT_AUTH_USER |
  198. // ASCII STRING - Name of authenticated user
  199. IMMPID_MP_CLIENT_AUTH_USER,
  200. //@const IMMPID | IMMPID_MP_CLIENT_AUTH_TYPE |
  201. // ASCII STRING - Type of authentication used (AUTH keyword)
  202. IMMPID_MP_CLIENT_AUTH_TYPE,
  203. //@const IMMPID | IMMPID_MP_CRC_GLOBAL |
  204. // DWORD - Checksum for global properties (excluding the checksum properties!)
  205. IMMPID_MP_CRC_GLOBAL,
  206. //@const IMMPID | IMMPID_MP_CRC_RECIPS |
  207. // DWORD - Checksum for recipient properties
  208. IMMPID_MP_CRC_RECIPS,
  209. // @const IMMPID | IMMPID_MP_INBOUND_MAIL_FROM_AUTH |
  210. // ANSI String - Contents of the RFC2554 AUTH= string on a MAIL FROM on inbound messages
  211. IMMPID_MP_INBOUND_MAIL_FROM_AUTH,
  212. // Add new per-message properties above this line.
  213. IMMPID_END_LIST(MP)
  214. // Message classes
  215. // @const DWORD | MP_MSGCLASS_SYSTEM
  216. // for msgs of type -- system
  217. #define MP_MSGCLASS_SYSTEM 1
  218. // @const DWORD | MP_MSGCLASS_REPLICATION
  219. // for msgs of type -- replication
  220. #define MP_MSGCLASS_REPLICATION 2
  221. // @const DWORD | MP_MSGCLASS_DELIVERY_REPORT
  222. // for msgs of type -- delivery report
  223. #define MP_MSGCLASS_DELIVERY_REPORT 3
  224. // @const DWORD | MP_MSGCLASS_DELIVERY_REPORT
  225. // for msgs of type -- non-delivery report
  226. #define MP_MSGCLASS_NONDELIVERY_REPORT 4
  227. // Message status property values defined:
  228. // @const DWORD | MP_STATUS_SUCCESS |
  229. // Initial status of message
  230. #define MP_STATUS_SUCCESS 0
  231. // @const DWORD | MP_STATUS_RETRY |
  232. // Status indicating retry.
  233. #define MP_STATUS_RETRY 1
  234. // @const DWORD | MP_STATUS_ABORT_DELIVERY |
  235. // Delivery of this message should be aborted and the message deleted.
  236. #define MP_STATUS_ABORT_DELIVERY 2
  237. // @const DWORD | MP_STATUS_BAD_MAIL |
  238. // This message should be moved to badmail.
  239. #define MP_STATUS_BAD_MAIL 3
  240. // @const DWORD | MP_STATUS_SUBMITTED |
  241. // Message has been submitted for delivery.
  242. #define MP_STATUS_SUBMITTED 4
  243. // @const DWORD | MP_STATUS_CATEGORIZED |
  244. // Message has been categorized.
  245. #define MP_STATUS_CATEGORIZED 5
  246. // @const DWORD | MP_STATUS_ABANDON_DELIVERY |
  247. // Delivery of this message should be abandoned until the service restarts
  248. #define MP_STATUS_ABANDON_DELIVERY 6
  249. //Per recipient flags for IMMPID_RP_RECIPIENT_FLAGS
  250. // @const DWORD | RP_RECIP_FLAGS_RESERVED |
  251. // You should not modify / use these bits
  252. #define RP_RECIP_FLAGS_RESERVED 0x0000000F
  253. // @const DWORD | RP_DSN_NOTIFY_SUCCESS |
  254. // Notify on success - set if RFC1891 NOTIFY=SUCCESS is used
  255. #define RP_DSN_NOTIFY_SUCCESS 0x01000000
  256. // @const DWORD | RP_DSN_NOTIFY_FAILURE |
  257. // Notify on failure - set if RFC1891 NOTIFY=FAILURE is used
  258. #define RP_DSN_NOTIFY_FAILURE 0x02000000
  259. // @const DWORD | RP_DSN_NOTIFY_DELAY |
  260. // Notify on delay - set if RFC1891 NOTIFY=DELAY is used
  261. #define RP_DSN_NOTIFY_DELAY 0x04000000
  262. // @const DWORD | RP_DSN_NOTIFY_NEVER |
  263. // Never notify - set if RFC1891 NOTIFY=NEVER is used
  264. #define RP_DSN_NOTIFY_NEVER 0x08000000
  265. // @const DWORD | RP_DSN_NOTIFY_MASK |
  266. // Mask of all notify parameters
  267. #define RP_DSN_NOTIFY_MASK 0x0F000000
  268. //The following flags can be used in searches, but should not be set directly
  269. // @const DWORD | RP_HANDLED |
  270. // Recipient has either been delivered or should not be delivered
  271. // (this flag is provided to check status of recipient... it should never be used
  272. // directly)
  273. #define RP_HANDLED 0x00000010
  274. // @const DWORD | RP_GENERAL_FAILURE |
  275. // some form of hard failure happend
  276. // (this flag is provided to check status of recipient... it should never be used
  277. // directly)
  278. #define RP_GENERAL_FAILURE 0x00000020
  279. // @const DWORD | RP_DSN_HANDLED |
  280. // Final DSN has been sent (or no DSN needs to be sent)
  281. // (this flag is provided to check status of recipient... it should never be used
  282. // directly)
  283. #define RP_DSN_HANDLED 0x00000040
  284. //The following constants define how a message can be RP_HANDLED
  285. // @const DWORD | RP_DELIVERED |
  286. // The recipient has been delivered successfully
  287. #define RP_DELIVERED 0x00000110
  288. // @const DWORD | RP_DSN_SENT_NDR |
  289. // NDR (FAILED DSN) for this recipient has been sent
  290. #define RP_DSN_SENT_NDR 0x00000450
  291. // @const DWORD | RP_FAILED |
  292. // Recipient has a hard failure
  293. #define RP_FAILED 0x00000830
  294. // @const DWORD | RP_UNRESOLVED |
  295. // This recipient was not resolved by categorization
  296. #define RP_UNRESOLVED 0x00001030
  297. // @const DWORD | RP_ENPANDED |
  298. // ***OBSOLETE*** (replaced by RP_EXPANDED)
  299. #define RP_ENPANDED 0x00002010
  300. // @const DWORD | RP_EXPANDED |
  301. // This recipient is an expanded DL
  302. #define RP_EXPANDED 0x00002010
  303. // @const DWORD | RP_DSN_SENT_DELAYED |
  304. // At least one Delay DSN sent
  305. #define RP_DSN_SENT_DELAYED 0x00004000
  306. // @const DWORD | RP_DSN_SENT_EXPANDED |
  307. // Expanded DSN has been sent
  308. #define RP_DSN_SENT_EXPANDED 0x00008040
  309. // @const DWORD | RP_DSN_SENT_RELAYED |
  310. // Relayed DSN has been sent
  311. #define RP_DSN_SENT_RELAYED 0x00010040
  312. // @const DWORD | RP_DSN_SENT_DELIVERED |
  313. // Delivered DSN has been sent
  314. #define RP_DSN_SENT_DELIVERED 0x00020040
  315. // @const DWORD | RP_REMOTE_MTA_NO_DSN |
  316. // Remote MTA does not advertise DSN support (relay might be needed)
  317. #define RP_REMOTE_MTA_NO_DSN 0x00080000
  318. // @const DWORD | RP_ERROR_CONTEXT_STORE |
  319. // Error happened in store driver
  320. #define RP_ERROR_CONTEXT_STORE 0x00100000
  321. // @const DWORD | RP_ERROR_CONTEXT_CAT |
  322. // Error happened during categorization
  323. #define RP_ERROR_CONTEXT_CAT 0x00200000
  324. // @const DWORD | RP_ERROR_CONTEXT_MTA |
  325. // Error happened in a MTA (eg SMTP stack)
  326. #define RP_ERROR_CONTEXT_MTA 0x00400000
  327. // @const DWORD | RP_VOLATILE_FLAGS_MASK |
  328. // Flags that can be used for temp storage
  329. #define RP_VOLATILE_FLAGS_MASK 0xF0000000
  330. //while a component has access to recipients
  331. //Once control of recipients is passed, value
  332. //is un-defined.
  333. // @const DWORD | RP_DSN_NOTIFY_INVALID |
  334. // *** OBSOLETE ***
  335. #define RP_DSN_NOTIFY_INVALID 0x00000000
  336. /*=======================================================================*/
  337. // These are the per-recipient properties.
  338. IMMPID_START_LIST(RP,0x2000,"79E82048-D320-11d1-9FF4-00C04FA37348")
  339. // @const IMMPID | IMMPID_RP_DSN_NOTIFY_SUCCESS |
  340. // *** OBSOLETE ***
  341. IMMPID_RP_DSN_NOTIFY_SUCCESS,
  342. // @const IMMPID | IMMPID_RP_DSN_NOTIFY_INVALID |
  343. // *** OBSOLETE ***
  344. IMMPID_RP_DSN_NOTIFY_INVALID,
  345. // @const IMMPID | IMMPID_RP_ADDRESS_TYPE |
  346. // *** OBSOLETE ***
  347. IMMPID_RP_ADDRESS_TYPE,
  348. // @const IMMPID | IMMPID_RP_ADDRESS |
  349. // *** OBSOLETE ***
  350. IMMPID_RP_ADDRESS,
  351. // @const IMMPID | IMMPID_RP_ADDRESS_TYPE_SMTP |
  352. // *** OBSOLETE ***
  353. IMMPID_RP_ADDRESS_TYPE_SMTP,
  354. // @const IMMPID | IMMPID_RP_ERROR_CODE |
  355. // HRESULT status code
  356. IMMPID_RP_ERROR_CODE,
  357. // @const IMMPID | IMMPID_RP_ERROR_STRING |
  358. // *** OBSOLETE ***
  359. IMMPID_RP_ERROR_STRING,
  360. // @const IMMPID | IMMPID_RP_DSN_NOTIFY_VALUE |
  361. // *** OBSOLETE ***
  362. IMMPID_RP_DSN_NOTIFY_VALUE,
  363. // @const IMMPID | IMMPID_RP_DSN_ORCPT_VALUE |
  364. // ANSI string - \<address type\>;\<address\>
  365. IMMPID_RP_DSN_ORCPT_VALUE,
  366. // @const IMMPID | IMMPID_RP_ADDRESS_SMTP |
  367. // ANSI string - SMTP address
  368. IMMPID_RP_ADDRESS_SMTP,
  369. // @const IMMPID | IMMPID_RP_ADDRESS_X400 |
  370. // ANSI string - X.400 address
  371. IMMPID_RP_ADDRESS_X400,
  372. // @const IMMPID | IMMPID_RP_ADDRESS_X500 |
  373. // ANSI string - X.500 address
  374. IMMPID_RP_ADDRESS_X500,
  375. // @const IMMPID | IMMPID_RP_LEGACY_EX_DN |
  376. // ANSI string - DN for Exchange 5.5 and prev
  377. IMMPID_RP_LEGACY_EX_DN,
  378. // @const IMMPID | IMMPID_RP_RECIPIENT_FLAGS |
  379. // Per-recipient DSN/delivery flags. Flag constansts start with RP_.
  380. IMMPID_RP_RECIPIENT_FLAGS,
  381. // @const IMMPID | IMMPID_RP_SMTP_STATUS_STRING |
  382. // ANSI string - SMTP status string... if defined
  383. IMMPID_RP_SMTP_STATUS_STRING,
  384. // *must* start with 3-digit status code
  385. // @const IMMPID | IMMPID_RP_DSN_PRE_CAT_ADDRESS |
  386. // Original address as received by MTA in
  387. IMMPID_RP_DSN_PRE_CAT_ADDRESS,
  388. // IMMPID_RP_DSN_ORCPT_VALUE format
  389. // @const IMMPID | IMMPID_RP_MDB_GUID |
  390. // Categorizer stamps the MDB guid
  391. IMMPID_RP_MDB_GUID,
  392. // for this recipient here
  393. // @const IMMPID | IMMPID_RP_USER_GUID |
  394. // Categorizer stamps the
  395. IMMPID_RP_USER_GUID,
  396. // objectGUID of the user object here
  397. // @const IMMPID | IMMPID_RP_DOMAIN |
  398. // Alternate SMTP domain for categorization
  399. IMMPID_RP_DOMAIN,
  400. // @const IMMPID | IMMPID_RP_ADDRESS_OTHER |
  401. // ANSI string - other address type
  402. IMMPID_RP_ADDRESS_OTHER,
  403. // @const IMMPID | IMMPID_RP_DISPLAY_NAME |
  404. // Unicode string - recipient display name
  405. IMMPID_RP_DISPLAY_NAME,
  406. // Add new per-recipient properties above this line.
  407. IMMPID_END_LIST(RP)
  408. /*=======================================================================*/
  409. // These are per-message volatile properties - they are not persisted to
  410. // the property stream.
  411. IMMPID_START_LIST(MPV,0x3000,"CBE69706-C9BD-11d1-9FF2-00C04FA37348")
  412. // @const IMMPID | IMMPID_MPV_STORE_DRIVER_HANDLE |
  413. // Store driver context for this message.
  414. IMMPID_MPV_STORE_DRIVER_HANDLE,
  415. // @const IMMPID | IMMPID_MPV_MESSAGE_CREATION_FLAGS |
  416. // Flags set at creation of mailmsg.
  417. IMMPID_MPV_MESSAGE_CREATION_FLAGS,
  418. // @const IMMPID | IMMPID_MPV_MESSAGE_OPEN_HANDLES |
  419. // The number of handles (property and content) open for this message.
  420. // 0 means no handles open.
  421. // 1 means property or content open.
  422. // 2 means both property and content open.
  423. IMMPID_MPV_MESSAGE_OPEN_HANDLES,
  424. // @const IMMPID | IMMPID_MPV_TOTAL_OPEN_HANDLES |
  425. // The current total number of open message handles (of any type)
  426. // on this server.
  427. IMMPID_MPV_TOTAL_OPEN_HANDLES,
  428. // @const IMMPID | IMMPID_MPV_TOTAL_OPEN_PROPERTY_STREAM_HANDLES |
  429. // The current total number of open property streams on this server.
  430. IMMPID_MPV_TOTAL_OPEN_PROPERTY_STREAM_HANDLES,
  431. // @const IMMPID | IMMPID_MPV_TOTAL_OPEN_CONTENT_HANDLES |
  432. // The current total number of open content handles on this server.
  433. IMMPID_MPV_TOTAL_OPEN_CONTENT_HANDLES,
  434. // Add new per-message volatile properties above this line.
  435. IMMPID_END_LIST(MPV)
  436. // This is the structure for the IMMPID_MPV_STORE_DRIVER_HANDLE property.
  437. typedef struct tagIMMP_MPV_STORE_DRIVER_HANDLE {
  438. GUID guidSignature; // signature of the store driver whose handle this is
  439. } IMMP_MPV_STORE_DRIVER_HANDLE;
  440. // Define message object creation flags
  441. // @const DWORD | MPV_INBOUND_CUTOFF_EXCEEDED |
  442. // Mailmsg configured cutoff has been exceeded... if this is an external
  443. // delivery attempt, we should indicate that we do not have sufficient
  444. // resources to accept the mail.
  445. #define MPV_INBOUND_CUTOFF_EXCEEDED 0x00000001
  446. // @const DWORD | MPV_WRITE_CONTENT |
  447. // Indicates that the content of this message can be modified.
  448. #define MPV_WRITE_CONTENT 0x00000002
  449. /*=======================================================================*/
  450. // These are per-recipient volatile properties - they are not persisted to
  451. // the property stream.
  452. IMMPID_START_LIST(RPV,0x4000,"79E82049-D320-11d1-9FF4-00C04FA37348")
  453. // @const IMMPID | IMMPID_RPV_DONT_DELIVER |
  454. // IMMPID_RPV_DONT_DELIVER is a boolean. If set to TRUE, mailmsg
  455. // ignores this recipient when doing WriteList() (the recipient will
  456. // not exist in the new list).
  457. IMMPID_RPV_DONT_DELIVER,
  458. // @const IMMPID | IMMPID_RPV_NO_NAME_COLLISIONS |
  459. // IMMPID_RPV_NO_NAME_COLLISIONS is a boolean. If set to TRUE, mailmsg
  460. // does not detect duplicates with this recipient on future calls to
  461. // AddSecondary().
  462. IMMPID_RPV_NO_NAME_COLLISIONS,
  463. // Add new per-recipient volatile properties above this line.
  464. IMMPID_END_LIST(RPV)
  465. // These are defined for backwards-compatability. They will be removed
  466. // ASAP...
  467. // @const DWORD | IMMPID_RP_DONT_DELIVER |
  468. // *** OBSOLETE ***
  469. #define IMMPID_RP_DONT_DELIVER IMMPID_RPV_DONT_DELIVER
  470. // @const DWORD | IMMPID_RP_NO_NAME_COLLISIONS |
  471. // *** OBSOLETE ***
  472. #define IMMPID_RP_NO_NAME_COLLISIONS IMMPID_RPV_NO_NAME_COLLISIONS
  473. /*=======================================================================*/
  474. // These are the per-message properties for NNTP
  475. IMMPID_START_LIST(NMP,0x6000,"7433a9aa-20e2-11d2-94d6-00c04fa379f1")
  476. // @const IMMPID | IMMPID_NMP_SECONDARY_GROUPS |
  477. // An array of pointers to INNTPPropertyBag objects for each of
  478. // the newsgroups that the article is being posted into for the
  479. // current driver.
  480. IMMPID_NMP_SECONDARY_GROUPS,
  481. // @const IMMPID | IMMPID_NMP_SECONDARY_ARTNUM |
  482. // An array of article numbers for each of the newsgroups that
  483. // the article is being posted into for the current driver.
  484. IMMPID_NMP_SECONDARY_ARTNUM,
  485. // @const IMMPID | IMMPID_NMP_PRIMARY_GROUP |
  486. // A pointer to the INNTPPropertyBag object which represents the
  487. // primary group for the current driver.
  488. IMMPID_NMP_PRIMARY_GROUP,
  489. // @const IMMPID | IMMPID_NMP_PRIMARY_ARTID |
  490. // The primary article number for the primary group.
  491. IMMPID_NMP_PRIMARY_ARTID,
  492. // @const IMMPID | IMMPID_NMP_POST_TOKEN |
  493. // The HTOKEN representing the client context.
  494. IMMPID_NMP_POST_TOKEN,
  495. // @const IMMPID | IMMPID_NMP_NEWSGROUP_LIST |
  496. // The string of newsgroups which this article is being stored in.
  497. IMMPID_NMP_NEWSGROUP_LIST,
  498. // @const IMMPID | IMMPID_NMP_HEADERS |
  499. // A string containing the headers of the message.
  500. IMMPID_NMP_HEADERS,
  501. // @const IMMPID | IMMPID_NMP_NNTP_PROCESSING |
  502. // Flags which describe how the message should be processed. The
  503. // possible values are: NMP_PROCESS_POST, NMP_PROCESS_CONTROL,
  504. // and NMP_PROCESS_MODERATOR.
  505. IMMPID_NMP_NNTP_PROCESSING,
  506. // @const IMMPID | IMMPID_NMP_NNTP_APPROVED_HEADER |
  507. // A string containing the Approved: header of the message
  508. IMMPID_NMP_NNTP_APPROVED_HEADER,
  509. // Add new per-message properties above this line.
  510. IMMPID_END_LIST(NMP)
  511. // flags for IMMPID_NMP_NNTP_PROCESSING
  512. // @const DWORD | NMP_PROCESS_POST |
  513. // Set this flag to allow the NNTP server to post this message.
  514. #define NMP_PROCESS_POST 0x00000001
  515. // @const DWORD | NMP_PROCESS_CONTROL |
  516. // Set this flag to allow the NNTP server to process control headers in this
  517. // message.
  518. #define NMP_PROCESS_CONTROL 0x00000002
  519. // @const DWORD | NMP_PROCESS_MODERATOR |
  520. // Set this flag to allow the NNTP server to run this message through the
  521. // default moderated posting path.
  522. #define NMP_PROCESS_MODERATOR 0x00000004
  523. /*=======================================================================*/
  524. // This is the starting range for user-reserved properties
  525. IMMPID_START_LIST(CPV,0x8000,"A2A76B2A-E52D-11d1-AA64-00C04FA35B82")
  526. // @const IMMPID | IMMPID_CP_START |
  527. // Start of range
  528. IMMPID_CP_START,
  529. IMMPID_END_LIST(CPV)
  530. /*=======================================================================*/
  531. // This table collects the data about the properties so that range-
  532. // checking can be performed. If any new property ranges are
  533. // defined, they must be added to this structure.
  534. #define IMMPID_DECLARE_ENTRY(name) {&_uuidof(tagIMMPID_##name##_STRUCT),\
  535. IMMPID_##name##_BEFORE__+1,\
  536. IMMPID_##name##_AFTER__-1}
  537. extern const __declspec(selectany) struct tagIMMPID_GUIDLIST_ITEM {
  538. const GUID *pguid;
  539. DWORD dwStart;
  540. DWORD dwLast;
  541. } IMMPID_GUIDS[] = {IMMPID_DECLARE_ENTRY(MP),
  542. IMMPID_DECLARE_ENTRY(RP),
  543. IMMPID_DECLARE_ENTRY(MPV),
  544. IMMPID_DECLARE_ENTRY(RPV),
  545. {&GUID_NULL,0,0}};
  546. #endif // _MAILMSGPROPS_H_