ФАКТ: Gmail падает. Не часто, но это случается, и вы не можете это контролировать или проверять.
Самое простое быстрое решение - запустить отдельный поток или создать подпроцесс для отправки электронного письма. Да, скорее всего, возникнут проблемы с использованием Gmail, и я действительно не имею никакой информации по этому поводу и альтернатив. Но с точки зрения дизайна, просто нет причин заставлять пользователя ждать завершения этого процесса.
С точки зрения тестирования, здесь может пригодиться шаблон прокси. Вам может быть легко напрямую вызвать Gmail для отправки сообщения. Сделай это сложнее. Поместите в прокси-объект, который выполняет для вас рассылку, которую вы можете отключить (потому что, черт возьми, вы не можете в целях тестирования вызвать сбой Gmail). Просто заставьте свою команду следить за тем, что происходит в случае сбоя в работе электронной почты, отключив прокси-сервер и попытавшись выполнить заказ. Если вы делаете это синхронно, то все бедствия, упомянутые здесь другими авторами, поднимут голову. Если вы делаете это асинхронно, вы должны иметь возможность позволить ему молча провалиться (с точки зрения пользователя - с вашей точки зрения, среди ночи должны быть огромные операторы записи в журнал и текстовые сообщения и, возможно, слабый электрический ток, дуговой разряд). поверхность чьей-то кожи).