Попробуйте взглянуть на это с другой стороны. Сначала создайте свою электронную почту в базе данных, а затем отправьте электронные письма отдельным процессом. После каждой успешной отправки вы помечаете запись электронной почты базы данных как «отправленную».
Я рекомендую асинхронный подход. Поскольку электронные письма должны быть отправлены, они генерируются и хранятся в таблице EmailQueue. Другой процесс отслеживает таблицу EmailQueue и отправляет электронные письма по мере их обнаружения. Таким образом, любая задержка с фактической отправкой электронной почты не будет мешать процессу, который генерирует электронные письма для отправки.