You can configure the Exchange Connector to retrieve messages that have a specific set of properties. To retrieve messages that have specific properties, use the MessageFilterLua
configuration parameter.
The MessageFilterLua
parameter specifies the location of a Lua script to filter the messages in the repository.
The Lua script must include the following functions:
requiredMapiProperties
function extracts message properties that you want to use for filtering the messages.filter
function compares the properties to one or more values and determines whether the message is retrieved. If filter
returns true
, the message is retrieved. If filter
returns false
, the message is ignored.The message properties returned by the requiredMapiProperties
function are returned as an array: properties[MapiProperty][value]
.
Some properties have a single value, for example, the subject of an e-mail message would be returned as properties[0x0037001E][1]
.
If a property has multiple values, these can be accessed as properties[MapiProperty][2]
, properties[MapiProperty][3]
, and so on.
You could use the following script to retrieve messages sent to brian@example.com. All other messages are ignored.
function requiredMapiProperties() return {0x0E04001F}; end function filter(properties) return properties[0x0E04001F][1]=="brian@example.com"; end
The following script demonstrates how to evaluate more than one property. This example retrieves all messages that were sent to one@autonomy.com or two@autonomy.com, and have the subject Important.
The search
function searches every value of the specified property for acceptable strings. This means that messages sent to more than one recipient are retrieved, as long as one of the required addresses is found.
function filter(properties) local addresses={ "one@autonomy.com" , "two@autonomy.com" } local subjects={ "Important" } local to=search(properties[0x0E04001F],addresses) local subject=search(properties[0x0037001E],subjects) local result = to and subject; return result; end function requiredMapiProperties() return {0x0E04001F,0x0037001E}; end function search(property,values) for a,b in pairs(property) do for k,v in pairs(values) do if string.find(b,v)~=nil then return true; end end end return false; end
|