home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / dbmsg / mapi / docfile.ms / readme.txt < prev    next >
Encoding:
Text File  |  1996-02-12  |  5.4 KB  |  146 lines

  1. MAPI Sample Message Store
  2.  
  3.  
  4. The DOCFile.Ms sample demonstrates how to use a sample message store.
  5.  
  6. The message store is based on the file system. Each folder is a directory
  7. and each message is a file. Additional files hold properties of folders
  8. and of the message store itself.
  9.  
  10. Files
  11. -----
  12.  
  13. File          Description
  14.  
  15. *.FLD         Folder.
  16. *.MSG         Message.
  17. FOLDER.PRP    Folder properties (any folder).
  18. MSGSTORE.PRP  Message store properties (root folder only).
  19. RECFLDR.STG   Receive folder settings (root folder only).
  20. CONTENTS.TBL  Folder contents table cache.
  21. OUTGOING.TBL  Outgoing queue table cache (root folder only).
  22. *.TMP         Message in composition.
  23. *.RRT         Read receipt.
  24.  
  25. Entry IDs
  26. ---------
  27.  
  28. A sample store entry ID contains the path of the item to which it refers,
  29. relative to the store root directory. This enables a sample message store
  30. to be copied usnig the file system with relative impunity (except to a
  31. subdirectory of another sample message store).
  32.  
  33. The sample message store does not distinguish between short- and long-term
  34. entry IDs.
  35.  
  36. Message on Storage
  37. ------------------
  38.  
  39. The IMAPIProp interface for all objects relies heavily upon the IMessage
  40. interface implemented in IMSG.DLL, which in turn is based upon OLE 2.0
  41. docfiles (the IStorage interface).
  42.  
  43. Interface Lifetime and Cross-referencing
  44. ----------------------------------------
  45.  
  46. The sample message store links child objects back to their parents, for
  47. leak detection and invalidation when the parent object is closed before
  48. the child. Opening a table on an object (such as a folder) and then
  49. closing the folder invalidates the object, but not the table. This method
  50. is slightly more sophisticated than simply incrementing the object reference
  51. count when the table is opened.
  52.  
  53. Contents and Hierarchy Tables
  54. -----------------------------
  55.  
  56. The IMAPITable interface for contents and hierarchy tables relies upon the
  57. IMAPITableData interface in MAPIU.DLL; the size of a folder is therefore
  58. limited to the amount of RAM available for the contents table. Initially,
  59. a contents table is created by scanning the directory for .MSG files,
  60. extracting some properties from each file, and writing a row for each
  61. message to the table data object. To speed up subsequent open operations,
  62. the table is then written out to a .TBL file, and the .TBL file is carefully
  63. kept up to date by subsequent changes in the folder. Hierarchy tables are not
  64. cached; the sample message store uses notification internally to keep them
  65. up to date while they are open.
  66.  
  67. Supported Features
  68. ------------------
  69.  
  70. Basic operations. The sample message store supports reading, creating,
  71. modifying, and deleting messages; browsing, creating, and deleting folders;
  72. submitting outbound message to transports; and associating all types of
  73. attachments with messages. Multivalued properties are supported for all
  74. objects. The sample message store can be used as the default message store
  75. for a MAPI client.
  76.  
  77. Copy operations. The sample message store supports moving and copying
  78. messages and folders. These operations are delegated to MAPI support
  79. functions unless an operation occurs entirely within one sample message store.
  80.  
  81. Event notification. The sample message store supports event notification on
  82. tables (again, courtesy of IMAPITableData). Object notifications and new-mail
  83. notifications are not supported.
  84.  
  85. Multithread safety. On 32-bit Windows platforms, all sample message store
  86. interfaces protect themselves from concurrent access by multiple threads.
  87.  
  88. Cross-platform support. The sample message store source code generates
  89. executable files for Windows 3.X, Windows 95, and Windows NT 3.5 and above
  90. from a single set of source files.
  91.  
  92. Unsupported Features
  93. --------------------
  94.  
  95. Named properties (GetNamesFromIDs and GetIDsFromNames methods of IMAPIProp).
  96.  
  97. Searches (SetSearchCriteria method of IMAPIFolder).
  98.  
  99. Categorization of contents tables.
  100.  
  101. Folder-associated information (MAPI_ASSOCIATED, DEL_ASSOCIATED flags).
  102.  
  103. IMAPIStatus interface.
  104.  
  105. ServiceEntry interface for configuration.
  106.  
  107. Certain other methods are unsupported, including IMAPIFolder::OpenProperty
  108. and IMsgStore::CopyTo.
  109.  
  110. Configuration
  111. -------------
  112.  
  113. The sample message store has two configurable properties: the path to the
  114. store root directory and a password. Configuration is supported at service
  115. provider logon only.
  116.  
  117. Known Problems
  118. --------------
  119.  
  120. No error message appears if a user types the wrong password when logging
  121. onto a sample message store.
  122.  
  123. Named properties in folder contents tables are not handled correctly. The
  124. store should not allow them, because every message has a different property
  125. name to ID mapping; but they are allowed.
  126.  
  127. PR_NULL is handled incorrectly in IMAPIProps::GetProps. It should create 
  128. a placeholder in the returned property value array with PR_NULL for the
  129. property tag. In fact, it places an error value (with MAPI_E_NOT_FOUND)
  130. in the property value array and returns MAPI_W_ERRORS_RETURNED from
  131. GetProps.
  132.  
  133. Installation
  134. ------------
  135.  
  136. To install the sample message store you have to
  137.  
  138. 1. Merge the file smpms.inf with the mapisvc.inf located in your windows
  139.    system directory. You can do it using mergeini utility that comes with
  140.    MAPI SDK. The syntax is "mergeini -m smpms.inf".
  141.  
  142. 2. Copy smpms(32).dll to the windows system directory.
  143.  
  144. 3. Add the sample store to any MAPI profile using the Mail and Fax control
  145.    panel applet.
  146.