Я рекомендую сохранить исходящее сообщение в базе данных, затем поставить в очередь фактическую доставку, чтобы другое приложение, предназначенное только для электронной почты, могло справиться с таймаутами и другими опасностями - и очередь позволит вам корректно восстановиться после этих сбоев.
Более того, в зависимости от вашей конфигурации и типа платформы очереди сообщений, которую вы используете, вы можете перенести обработку электронной почты на другой сервер или серверы, чтобы она не конкурировала с вашим приложением. Не то, чтобы электронная почта была особенно ресурсоемкой, но каждый бит гибкости имеет значение, когда вы заняты масштабированием.
Наконец, еще один плюс: отдельное приложение для доставки электронной почты, которое использует сообщения в очереди, может обслуживать несколько приложений.