Table of Contents

Class MailDraftServerCopy

Namespace
MailFathom.Domain.Delivery.Drafts
Assembly
MailFathom.Domain.dll

Reports one copy of a draft that MailFathom put into the drafts folder, and what has become of it since.

public sealed record MailDraftServerCopy : IEquatable<MailDraftServerCopy>
Inheritance
MailDraftServerCopy
Implements
Inherited Members

Remarks

One row per revision of the draft, which is what makes a replacement expressible at all. IMAP has no command that changes a stored message, so a new version of a draft is a new message beside the old one and the old one is removed afterwards — and between those two commands the folder holds two copies that both belong to this draft. A single slot could not say that, and a slot overwritten by the newer copy would lose the only thing naming the one still to be taken out.

The occurrence recorded here is the server's own statement about the copy it accepted, never a search for something that looks like the message. That is the whole of what makes the removal safe: the only UID this system ever expunges is one an APPEND of its own reported, so a draft the owner wrote themselves is unreachable from here by construction rather than by a check.

Nothing here is mail content. A folder, an alias, a UID, and an identity MailFathom minted itself are its own or the server's names for things.

Properties

AppendedAt

Gets when the append was issued.

FolderAlias

Gets MailFathom's own name for the folder the copy went into, which is what a failure and a log line name.

FolderPath

Gets the remote path the copy was appended to, which is what a later attempt compares the resolution against.

HasUnknownOutcome

Gets whether the append went out and the server's answer to it never came back.

InternetMessageId

Gets the Message-ID the appended copy carries, or null while none was read.

IsRemovable

Gets whether MailFathom can still name this copy to a server well enough to remove it.

IsStanding

Gets whether the folder holds this copy as far as MailFathom knows.

Placement

Gets where the folder put the copy, as far as the server said.

Revision

Gets which revision of the draft this copy carries.

SettledAt

Gets when the copy stopped standing in the folder, or null while it still does.

Stage

Gets what has become of the copy.

Methods

NamesFolder(RemoteFolderPath)

Reports whether this copy still names the folder a fresh resolution of the drafts role points at.