pub(crate) async fn run_mail_queue_phase<P: MailQueuePhase>(
ctx: &PhaseContext<'_>,
scope: &PhaseScope,
) -> Result<PhaseRunOutcome>Expand description
Claims, resolves templates for, and queues mail for one iteration of a MailQueuePhase. A mail
with no template is skipped rather than failing the iteration: the batch is one transaction, so an
error would roll back every mail that could be queued, and the claimed rows stay claimable.