Я сделал это на недавнем проекте. Мое решение довольно сложное, но в двух словах есть два ключа Web.config, которые управляют этим: EmailTestMode и EmailEnabled. Если EmailTestMode включен, сообщения генерируются, но отправляются на определенный адрес, а не на предполагаемого получателя. Если EmailEnabled выключен, сообщения регистрируются, но не отправляются.
Я столкнулся с проблемой создания класса Messenger, который управляет этими элементами для меня - я просто вызываю метод с различными атрибутами сообщения, и он выясняет, нужно ли и куда его отправлять. У меня также есть отдельный блок конфигурации в Web.config, который содержит все системные сообщения. Таким образом, отправитель, получатель, тема и тело могут быть легко изменены из файла конфигурации. В большинстве случаев тело либо создается приложением, либо использует String.Format () для заполнения значений.