Я думаю, что вы правы, чтобы полностью отделить использование системных функций: используйте SQL для данных и отправьте электронную почту совершенно другому «поставщику услуг»; Я предполагаю, что у вас есть какой-то уровень бизнес-логики, который будет управлять этим?
Я не могу говорить с точки зрения «наилучшей практики» из опыта (особенно для электронной почты), но абстрагирование службы электронной почты (как если бы вы абстрагировали доступ к данным), безусловно, на правильном пути, и вероятно, критическое решение, которое вам нужно принять прямо сейчас. Тогда у вас могут быть разные реализации электронной почты (включая SQL, если вы действительно этого хотите).
В зависимости от громкости - вы смотрите на асинхронный или синхронный вызов? WCF кажется хорошим кандидатом для обработки сообщений - это позволит вам отправлять данные (для электронных писем) в конечную точку, в которую встроена очередь, или вы можете вызывать (через WCF) веб-службу, которая действует синхронно.