Enum OutgoingRecipientStatus
- Namespace
- MailFathom.Domain.Delivery
- Assembly
- MailFathom.Domain.dll
States what one recipient of an outgoing email has durably settled at.
public enum OutgoingRecipientStatus
Fields
Accepted = 1The message was transmitted with this recipient accepted, so nothing offers them again.
It is written when an acknowledged transmission covered the recipient rather than when the server accepted the address, because those are different facts: an envelope accepted by a session that then failed delivered nothing, and treating it as delivery would silently drop a recipient from every later attempt.
Pending = 0Nothing has settled this recipient, so the next attempt offers them.
It covers a recipient never offered, one a server temporarily rejected, and one whose address a server accepted on an attempt that then failed — all the same thing to the attempt that follows. Which of them it is reads from the recorded reply beside it.
On a record that has reached a terminal stage it says the recipient was never settled by an answer, not that one is still owed: whether anything is offered again is the record's stage, and this member is about the address. Writing Refused there instead would state that a server refused an address it may well have accepted.
Refused = 2The server permanently refused this recipient, so nothing offers them again and nothing reaches them.
Remarks
The set answers one question and only that one: is this recipient offered on the next attempt. A recipient the message reached must never be offered again, because a second offer accepted is a second copy in their mailbox; a recipient permanently refused must never be offered again either, because the answer will not change. Everything else is offered.
There is deliberately no member for a temporary rejection. A recipient a server deferred is one the next attempt offers, which is what Pending already means, and the reply that deferred them is recorded beside the status rather than encoded in it. A fourth member saying the same thing would let the same recipient be described two ways, and the one that decides what happens next is this one.
The status is stored as its name for the reason the stage is: it stays readable in an ad-hoc query and survives any later reordering of this enum.