Вы хотите избежать использования статических служебных методов, которые зависят от состояния или имеют внешние эффекты, которых вы, возможно, захотите избежать по любой причине (в некоторых случаях при тестировании).
В этом случае отправка почты, вероятно, зависит от внешнего состояния (доступности почтового сервера) и приводит к внешним эффектам, которых вы вполне можете избежать (отправка электронной почты). Для разработки и тестирования вы, вероятно, вообще не хотите, чтобы электронная почта отправлялась вообще. В других случаях вы можете проверить, было ли отправлено электронное письмо, но как это сделать, если почта действительно отправляется? Настроить какую-то сложную систему, чтобы проверить реальный почтовый ящик на наличие почты?
Если вы внедрите интерфейс, представляющий MailSender
, вы можете предоставить NoopMailSender
, который ничего не делает, если вам неважно отправляемое письмо, и StubMailSender
фальшивка, которая собирает List<EmailMessage>
писем, были отправлены через него, если вы хотите проверить, были ли определенные письма отправлены вашим кодом.