Table of Contents

Constructor MailRuleExecutedAction

Namespace
MailFathom.Application.Rules.History
Assembly
MailFathom.Application.dll

MailRuleExecutedAction(int, MailboxMutation, MailRuleExecutedActionOutcome, string?, MailRuleActionFailureReason?, MailboxMutationRecordId?)

One change a matching rule declared, and what the pass did about it.

public MailRuleExecutedAction(int Position, MailboxMutation Mutation, MailRuleExecutedActionOutcome Outcome, string? Destination = null, MailRuleActionFailureReason? FailureReason = null, MailboxMutationRecordId? MutationRecordId = null)

Parameters

Position int

Where the action sits in the order the rule declares its changes, counted from zero.

Mutation MailboxMutation

The change asked for, which is the same word a log line, a counter, and the mutation trail use.

Outcome MailRuleExecutedActionOutcome

What became of it.

Destination string

The folder the action named, and null for an action naming none.

FailureReason MailRuleActionFailureReason?

Why nothing was recorded, which is present exactly when the outcome is Refused.

MutationRecordId MailboxMutationRecordId?

The record carrying the request, which is present exactly when the outcome is Requested.

Remarks

Every value here is MailFathom's own name for something: a mutation name, a configured folder alias, a bounded reason, and two identifiers. Nothing is derived from the message, which is what lets an operator be told what a rule did to a mailbox without the record becoming a second copy of it.

The destination is text rather than an alias because the two outcomes can answer it to different depths. An action the pass requested names the alias its destination resolved to, which is the folder mail was actually filed into. An action that never got that far names what the rule wrote — an alias, or role:Junk — because a role that reached no folder has no alias to name and the rule's own words are what an operator has to correct.

The record identifier is a pointer rather than a copy. What happened on the server — attempted, converged, given up on — is the mutation's own trail, with its own retention, and restating any of it here would leave two answers to one question that could disagree.