Behaviour for adopter-defined inbound mailboxes.
Phase 39 locks the public mailbox contract to one callback:
process/1. The callback receives the stable
%MailglassInbound.InboundMessage{} value object and must return one of the
approved outcomes:
:accept:ignore{:reject, reason}{:bounce, reason}
Raises, throws, and exits are execution failures handled by internal runners. They are not semantic mailbox outcomes.
Summary
Types
@type outcome() :: :accept | :ignore | {:reject, outcome_reason()} | {:bounce, outcome_reason()}
@type outcome_reason() :: term()
Callbacks
@callback process(MailglassInbound.InboundMessage.t()) :: outcome()