README.TXT
Sample Message Hook 
 
 
The Manager.Sh sample is a sample spooler message hook provider (SMH32.DLL). 
The sample spooler hook is an example of a reasonably clever extension to 
MAPI which uses the documented MAPI spooler message hook interfaces to 
categorize and archive sent and received mail. 
 
Installation 
------------ 
 
The sample spooler hook is shipped in source form for 32-bit platforms only. 
You must build SMH32.DLL first. For the DLL to build successfully, you must 
have an SDK that includes the import libraries for the Windows 95 common 
controls installed. For the DLL to run successfully on Windows NT 3.5, the 
Windows 95 compatible common controls must be installed. Windows NT 3.51 
includes these controls. 
 
After building SMH32.DLL, copy it to the system directory of the target 
machine, then use the mergeini utility to merge smh.inf into mapisvc.inf. 
 
For example: 
 
    copy smh32.dll c:\windows\system 
    mergeini.exe -m .\smh.inf 
 
Start the control panel and start the Mail and Fax applet. Select "Add..." 
on the Services page of Profile Properties and double-click Sample Mail 
Handler. 
 
Configuration 
------------- 
 
The sample message hook has a three-page property sheet interface for 
interactive configuration, which is accessible through service provider 
logon, through the ServiceEntry call, and through the 
IMAPIStatus::SettingsDialog method. 
 
When you first add the sample message hook to the profile configuration, 
you will need to log off the profile if you are already logged in, and 
then log in again before the change will take effect. 
 
General Page 
------------ 
 
Incoming mail -- Use the "Enable filtering of inbound messages" checkbox 
to start inbound/outbound mail "filter"ing. Use the "Add unread messages 
folder to hierarchy" checkbox to create a search folder containing all 
unread messages for easier access. 
 
Sent mail -- Use the "Archive sent mail into monthly subfolders" checkbox 
to instruct the hook processor to categorize sent mail by date and to use 
and create subfolders based on the month of submission to contain these 
messages. Use the "Archive sent mail monthly folders by year" checkbox to 
further organize the archives by year (e.g. sent mail\year\month folder 
hierarchy). 
 
Deleted mail -- Use the "Archive deleted mail into monthly subfolders" 
checkbox to instruct the hook processor to categorize deleted mail by date 
and to use and create subfolders based on the month of creation to contain 
these messages. Use the "Archive deleted mail monthly folders by year" 
checkbox to further organize the archives by year 
(e.g. deleted mail\year\month folder hierarchy). 
 
Filters Page 
------------ 
 
This page displays a listbox containing all the filters/actions which have 
been defined for this profile. The sample hook processor traverses this 
list from top to bottom in determining the disposition of a newly 
sent/received message. The first rule that "fires" will be the only one 
which is applied to the message in question. 
 
To add a filter rule, use the "New" button. To change a rule, select it 
and use the "Edit" button. To delete a rule, select it and use the "Delete" 
button. To arrange the ordering of rules, select the rule whose position in 
the list needs changing and use the up/down arrow buttons to make the 
appropriate change. 
 
When you select "New" or "Edit", the filter description dialog will be 
presented to you. In this dialog you should enter a display name for the 
filter rule that can be used for the listbox, select one of the filtering 
criteria (self-explanatory). Enter the appropriate string in "Value contains" 
(in the case of recipients, the filter compares both the display name and 
the email address), the display name (as shown in the left-hand pane of the 
Exchange mail client) of the target store in the "Target Store" field, and 
the display name (again as shown in the Exchange mail client) of the folder 
to which you want mail matching this filter rule to be copied in the "Target 
Folder" field. The hook provider will create folders if need be; to specify 
folders in a hierarchy, use a backslash character (e.g. My Mail\Clever 
Sayings). To get the negative effect (ie this rule fires for a message not 
matching the criteria), set the "Filter messages that do not match this 
criteria" checkbox. To disable a filter without deleting it, you set the 
"Discontinue the filtering of messages matching this criteria" checkbox. To 
choose archiving options for the filter (like in the Sent Mail / Deleted Mail 
option above) you may set the appropriate checkboxes for the rule. 
 
Exclusions Page 
--------------- 
 
This page displays a listbox containing all the message classes for which 
filtering is disabled. The sample hook processor traverses this list from top 
to bottom in determining whether it should filter a newly sent/received 
message. If any message class matches, rules processing will not occur for 
that message. 
 
To add a message class, use the New button. To delete a rule, select it and 
use the Delete button. To arrange the ordering of rules, select the rule 
whose position in the list needs changing and use the up/down arrow buttons 
to make the appropriate change. 
 
Known Problems 
-------------- 
 
Some of the sample hook's features will not work if you use a tightly-coupled 
store and transport as your default message store. The archiving of sent and 
received mail will not work, because the hook entry points are never called 
when the message store server receives mail. Other features, such as archiving 
of deleted messages and auto-reply, will work normally. 
 
The hook only can be built on/for 32-bit platforms (this is a limitation of 
the sample provider, not of the hook interface itself). The Unread Messages 
folder doesn't always seem to be accessable from the Exchange client. The 
"Filter messages that do not match this criteria" checkbox doesn't always 
seem to work.