pub async fn dispatch_mail_outbox<R, E, List, ListFut, Claim, ClaimFut, Deliver, DeliverFut, MarkSent, MarkSentFut, MarkRetry, MarkRetryFut, MarkFailed, MarkFailedFut, OnSent, OnSentFut, OnFailed, OnFailedFut>(
config: &MailOutboxDispatchConfig,
list_claimable: List,
try_claim: Claim,
deliver: Deliver,
mark_sent: MarkSent,
mark_retry: MarkRetry,
mark_failed: MarkFailed,
on_sent: OnSent,
on_failed: OnFailed,
) -> Result<DispatchStats, E>where
R: MailOutboxDispatchRow,
E: Display,
List: FnMut(u64, i64) -> ListFut,
ListFut: Future<Output = Result<Vec<R>, E>>,
Claim: FnMut(i64) -> ClaimFut,
ClaimFut: Future<Output = Result<bool, E>>,
Deliver: FnMut(R) -> DeliverFut,
DeliverFut: Future<Output = Result<String, E>>,
MarkSent: FnMut(i64, usize) -> MarkSentFut,
MarkSentFut: Future<Output = Result<bool, E>>,
MarkRetry: FnMut(i64, i32, i64, String) -> MarkRetryFut,
MarkRetryFut: Future<Output = Result<bool, E>>,
MarkFailed: FnMut(i64, i32, String) -> MarkFailedFut,
MarkFailedFut: Future<Output = Result<bool, E>>,
OnSent: FnMut(MailOutboxDispatchContext, i32, String) -> OnSentFut,
OnSentFut: Future<Output = ()>,
OnFailed: FnMut(MailOutboxDispatchContext, i32, String) -> OnFailedFut,
OnFailedFut: Future<Output = ()>,Expand description
Runs one mail outbox dispatch pass using product-provided persistence callbacks.
Forge owns the control flow and retry classification. Product crates own time calculation, repository calls, template rendering, mail auditing, and error types.
ยงErrors
Returns the product callback error when listing, claiming, delivery, or outcome persistence fails.