E2kAction

E2kAction — Server-side rule actions

Synopsis




struct      E2kAction;
enum        E2kActionType;
E2kAction*  e2k_action_move                 (GByteArray *store_entryid,
                                             GByteArray *folder_source_key);
E2kAction*  e2k_action_copy                 (GByteArray *store_entryid,
                                             GByteArray *folder_source_key);
enum        E2kActionReplyFlavor;
E2kAction*  e2k_action_reply                (GByteArray *template_entryid,
                                             guint8 template_guid[16]);
E2kAction*  e2k_action_oof_reply            (GByteArray *template_entryid,
                                             guint8 template_guid[16]);
E2kAction*  e2k_action_defer                (GByteArray *data);
enum        E2kActionBounceCode;
E2kAction*  e2k_action_bounce               (E2kActionBounceCode bounce_code);
struct      E2kAddrList;
enum        E2kActionForwardFlavor;
E2kAction*  e2k_action_forward              (E2kAddrList *list);
E2kAction*  e2k_action_delegate             (E2kAddrList *list);
E2kAction*  e2k_action_tag                  (const char *propname,
                                             E2kPropType type,
                                             gpointer value);
E2kAction*  e2k_action_delete               (void);

gboolean    e2k_actions_extract             (guint8 **data,
                                             int *len,
                                             GPtrArray **actions);
void        e2k_actions_append              (GByteArray *ba,
                                             GPtrArray *actions);
void        e2k_actions_free                (GPtrArray *actions);
void        e2k_action_free                 (E2kAction *act);

E2kAddrList* e2k_addr_list_new              (int nentries);
void        e2k_addr_list_set_local         (E2kAddrList *list,
                                             int entry_num,
                                             const char *display_name,
                                             const char *exchange_dn,
                                             const char *email);
void        e2k_addr_list_set_oneoff        (E2kAddrList *list,
                                             int entry_num,
                                             const char *display_name,
                                             const char *email);
void        e2k_addr_list_free              (E2kAddrList *list);

Description

E2kAction represents a single action taken by a server-side rule.

Note

This code is not heavily tested. It is possible that some of the information in this file about how server-side rules work is wrong.

Details

struct E2kAction

struct E2kAction {
};

A single server-side rule action.


enum E2kActionType

typedef enum {
	E2K_ACTION_MOVE         = 1,
	E2K_ACTION_COPY         = 2,
	E2K_ACTION_REPLY        = 3,
	E2K_ACTION_OOF_REPLY    = 4,
	E2K_ACTION_DEFER        = 5,
	E2K_ACTION_BOUNCE       = 6,
	E2K_ACTION_FORWARD      = 7,
	E2K_ACTION_DELEGATE     = 8,
	E2K_ACTION_TAG          = 9,
	E2K_ACTION_DELETE       = 10,
	E2K_ACTION_MARK_AS_READ = 11
} E2kActionType;

The kinds of server-side rule action.

E2K_ACTION_MOVEMove the message to another folder in the same store.
E2K_ACTION_COPYCopy the message to another folder in the same store.
E2K_ACTION_REPLYReply to the sender with a given template
E2K_ACTION_OOF_REPLYSend an out-of-office reply to the server with a given template
E2K_ACTION_DEFERHold the message for deferred processing (by the client).
E2K_ACTION_BOUNCEBounce the message back to the sender.
E2K_ACTION_FORWARDForward the message to given recipients.
E2K_ACTION_DELEGATEDelegate the meeting request to given recipients.
E2K_ACTION_TAGSet or remove arbitrary MAPI properties on the message.
E2K_ACTION_DELETEDelete the message (permanently, not via Deleted Items).
E2K_ACTION_MARK_AS_READMark the message as read.

e2k_action_move ()

E2kAction*  e2k_action_move                 (GByteArray *store_entryid,
                                             GByteArray *folder_source_key);

Creates a rule action to move a message into the indicated folder

store_entryid : The PR_STORE_ENTRYID of the message store
folder_source_key : The PR_SOURCE_KEY of a folder in that store
Returns : the new rule action

e2k_action_copy ()

E2kAction*  e2k_action_copy                 (GByteArray *store_entryid,
                                             GByteArray *folder_source_key);

Creates a rule action to copy a message into the indicated folder

store_entryid : The PR_STORE_ENTRYID of the message store
folder_source_key : The PR_SOURCE_KEY of a folder in that store
Returns : the new rule action

enum E2kActionReplyFlavor

typedef enum {
	E2K_ACTION_REPLY_FLAVOR_NOT_ORIGINATOR = 1,
	E2K_ACTION_REPLY_FLAVOR_STOCK_TEMPLATE = 2
} E2kActionReplyFlavor;

Additional information for an E2K_ACTION_REPLY rule.

E2K_ACTION_REPLY_FLAVOR_NOT_ORIGINATORDo not send reply to originator. (?)
E2K_ACTION_REPLY_FLAVOR_STOCK_TEMPLATE?

e2k_action_reply ()

E2kAction*  e2k_action_reply                (GByteArray *template_entryid,
                                             guint8 template_guid[16]);

Creates a rule action to reply to a message using the indicated template

template_entryid : The entryid of the reply template
template_guid : The GUID of the reply template
Returns : the new rule action

e2k_action_oof_reply ()

E2kAction*  e2k_action_oof_reply            (GByteArray *template_entryid,
                                             guint8 template_guid[16]);

Creates a rule action to send an Out-of-Office reply to a message using the indicated template

template_entryid : The entryid of the reply template
template_guid : The GUID of the reply template
Returns : the new rule action

e2k_action_defer ()

E2kAction*  e2k_action_defer                (GByteArray *data);

Creates a rule action to defer processing on a message

data : data identifying the deferred action
Returns : the new rule action

enum E2kActionBounceCode

typedef enum {
	E2K_ACTION_BOUNCE_CODE_TOO_LARGE     = 13,
	E2K_ACTION_BOUNCE_CODE_FORM_MISMATCH = 31,
	E2K_ACTION_BOUNCE_CODE_ACCESS_DENIED = 38
} E2kActionBounceCode;

An error code to associate with an E2K_ACTION_BOUNCE rule.

E2K_ACTION_BOUNCE_CODE_TOO_LARGEMessage is too large.
E2K_ACTION_BOUNCE_CODE_FORM_MISMATCHMessage is of wrong type (for public folder moderation rules).
E2K_ACTION_BOUNCE_CODE_ACCESS_DENIEDAccess denied (primarily for public folder moderation rules).

e2k_action_bounce ()

E2kAction*  e2k_action_bounce               (E2kActionBounceCode bounce_code);

Creates a rule action to bounce a message

bounce_code : a bounce code
Returns : the new rule action

struct E2kAddrList

struct E2kAddrList {
};

An opaque list of recipients to forward or delegate a message to.


enum E2kActionForwardFlavor

typedef enum {
	E2K_ACTION_FORWARD_FLAVOR_PRESERVE_SENDER = 1,
	E2K_ACTION_FORWARD_FLAVOR_DO_NOT_MUNGE    = 2,
	E2K_ACTION_FORWARD_FLAVOR_REDIRECT        = 3,
	E2K_ACTION_FORWARD_FLAVOR_AS_ATTACHMENT   = 4
} E2kActionForwardFlavor;

Additional information for an E2K_ACTION_FORWARD rule.

E2K_ACTION_FORWARD_FLAVOR_PRESERVE_SENDERPreserves sender information and indicates that the message was forwarded by a rule.
E2K_ACTION_FORWARD_FLAVOR_DO_NOT_MUNGEForwards message with no modifications
E2K_ACTION_FORWARD_FLAVOR_REDIRECTForwards message as a redirect
E2K_ACTION_FORWARD_FLAVOR_AS_ATTACHMENTForwards the message as an attachment

e2k_action_forward ()

E2kAction*  e2k_action_forward              (E2kAddrList *list);

Creates a rule action to forward a message to the indicated list of recipients

list : a list of recipients
Returns : the new rule action

e2k_action_delegate ()

E2kAction*  e2k_action_delegate             (E2kAddrList *list);

Creates a rule action to delegate a meeting request to the indicated list of recipients

list : a list of recipients
Returns : the new rule action

e2k_action_tag ()

E2kAction*  e2k_action_tag                  (const char *propname,
                                             E2kPropType type,
                                             gpointer value);

Creates a rule action to set the given property to the given value on a message.

propname : a MAPI property name
type : the type of propname
value : the value for propname
Returns : the new rule action

e2k_action_delete ()

E2kAction*  e2k_action_delete               (void);

Creates a rule action to permanently delete a message (ie, not just move it to the trash).

Returns : the new rule action

e2k_actions_extract ()

gboolean    e2k_actions_extract             (guint8 **data,
                                             int *len,
                                             GPtrArray **actions);

Attempts to extract a list of actions from *data, which contains a binary-encoded list of actions from a server-side rule.

On success, *actions will contain the extracted list, *data will be advanced past the end of the restriction data, and *len will be decremented accordingly.

data : pointer to data pointer
len : pointer to data length
actions : pointer to array to store actions in
Returns : success or failure

e2k_actions_append ()

void        e2k_actions_append              (GByteArray *ba,
                                             GPtrArray *actions);

Appends actions to ba as part of a server-side rule.

ba : a buffer into which a server-side rule is being constructed
actions : the actions to append to ba

e2k_actions_free ()

void        e2k_actions_free                (GPtrArray *actions);

Frees actions and all of its elements

actions : an array of E2kAction

e2k_action_free ()

void        e2k_action_free                 (E2kAction *act);

Frees act

act : the action

e2k_addr_list_new ()

E2kAddrList* e2k_addr_list_new              (int nentries);

Creates an address list for a forward or delegate rule, with nentries slots

nentries : the number of entries
Returns : the new address list

e2k_addr_list_set_local ()

void        e2k_addr_list_set_local         (E2kAddrList *list,
                                             int entry_num,
                                             const char *display_name,
                                             const char *exchange_dn,
                                             const char *email);

Sets entry number entry_num of list to refer to the indicated local Exchange user.

list : the address list
entry_num : the list entry to set
display_name : the UTF-8 display name of the recipient
exchange_dn : the Exchange 5.5-style DN of the recipient
email : the SMTP email address of the recipient

e2k_addr_list_set_oneoff ()

void        e2k_addr_list_set_oneoff        (E2kAddrList *list,
                                             int entry_num,
                                             const char *display_name,
                                             const char *email);

Sets entry number entry_num of list to refer to the indicated "one-off" SMTP user.

list : the address list
entry_num : the list entry to set
display_name : the UTF-8 display name of the recipient
email : the SMTP email address of the recipient

e2k_addr_list_free ()

void        e2k_addr_list_free              (E2kAddrList *list);

Frees list and all its entries.

list : the address list

See Also

E2kRule, E2kRestriction