Я бы сначала сохранял все ваши электронные письма, уведомления и т. Д. В БД / таблице, а затем имел бы службу, которая запрашивает новые записи в этой базе данных или таблице, которая обрабатывает фактическую отправку электронного письма / уведомления.
Чтобы разрешить ваши конкретные ситуации, контроллеры могут писать в БД, когда требуется электронная почта / уведомление, а служба, которая выполняет интервальные / специфические проверки, также пишет в БД для создания новой электронной почты. Таким образом, ваше приложение и служба на самом деле не заботятся о том, как или что происходит с этими уведомлениями, они просто говорят: «Эй, сделайте что-нибудь». и служба электронной почты / уведомлений фактически выполняет реализацию.
Преимущество этого заключается в том, что если ваш почтовый провайдер не работает, вы не теряете никаких электронных писем и у вас есть история всех электронных писем, отправленных с их сведениями о том, когда, кто и т. Д. Вы также можете удалить или изменить отправителю по электронной почте, чтобы сделать больше, например, отправить в Twitter или телефонное текстовое сообщение и т. д. Это эффективно отделит ваши уведомления от вашего приложения.
Все приложения, которые я сделал недавно, используют этот тип модели, и это предотвращает потерю электронной почты из-за сбоев службы и по другим причинам. Это также позволило искать все электронные письма, прошедшие через систему, и получать метрики, которые позволяют мне оптимизировать необходимость отправки электронных писем, сохраняя дополнительную информацию в записи электронной почты, такую как отправленная причина, если она сообщает об ошибке и т. Д. .. Добавление дополнений, таких как уведомления о маршрутизации (например, переход к текстовому сообщению вместо электронной почты), основанных на времени суток или пользователя, стало возможным без изменений в основном приложении.
Ваш клиент может подумать, что все, что ему нужно, это электронная почта сегодня, но вы должны убедиться, что ваше решение достаточно гибкое, чтобы в будущем можно было не просто отправлять электронные письма, а лишь незначительные изменения.