Куда отправляются письма?Сервисный слой или веб-слой? - PullRequest
2 голосов
/ 14 марта 2011

У меня была эта проблема с дизайном в течение нескольких недель. Где я могу разместить логику для отправки писем? Доступ к поведению можно получить через веб-интерфейс asp.net mvc или через конечную точку wcf, размещенную в приложении asp.net.

Вот особенности приложения:

  1. Уведомления по электронной почте.
  2. Рендеринг шаблона - это означает, что я должен знать структуру URL (действия, базовый адрес и т. Д.).

В настоящее время я храню базовые URL-адреса и пути в файле web.config и размещаю эту службу электронной почты на уровне службы.

Одной из конкретных функций является отправка пользователю подтверждающих электронных писем и отправка им созданного URL-адреса подтверждения. (не знаю, как сгенерировать этот URL из сервисного уровня)

Ответы [ 3 ]

6 голосов
/ 14 марта 2011

Электронные письма никогда не должны обслуживаться с веб-слоя. Вы никогда не хотите, чтобы пользователь ждал отправки электронного письма.

Лучше всего создать постоянную очередь электронной почты (sql в порядке), к которой другое задание получает доступ для отправки электронной почты. Это дает вам возможность повторно отправлять сбойные электронные письма и запускать их полностью вне вашей ветки веб-запросов.

4 голосов
/ 14 марта 2011

То, что говорит Джфар, правда; Тем не менее, вы могли бы использовать Почтовый для генерации ваших электронных писем, а затем снова сохранять эти электронные письма в базе данных, как предлагает jfar.

с почтового сайта:

Почтовая служба позволяет создавать электронные письма, используя регулярные просмотры MVC.

Это означает, что у вас будет папка Email в папке Views; эти представления на самом деле являются вашими шаблонами электронной почты и имеют полный доступ ко всем помощникам по HTML и URL, которые есть в любом другом представлении, что, вероятно, облегчит вам создание подтверждающего URL-адреса или чего-либо еще, что вам может понадобиться.

Почтовый включает и IEmailService интерфейс с конкретной реализацией EmailService. Этот сервис позволяет вам напрямую отправлять сообщения электронной почты или, что еще лучше, генерировать обычный MailMessage объект . Затем вы можете просто сохранить готовую электронную почту в таблице на БД и отправить ее позже с фоновым заданием.

0 голосов
/ 14 марта 2011

Вы также можете запустить SMTP-сервер на своем компьютере веб-сервера и просто сделать так, чтобы уровень бизнес-логики отправлял почту на этот SMTP-сервер.

Пока SMTP-сервер запущен и работает, ваше веб-приложение не будет терять производительность, а сам SMTP-сервер ставит в очередь входящие запросы и обрабатывает их в фоновом режиме.

...