ASP.Net MVC фоновые потоки для создания и отправки электронной почты - PullRequest
9 голосов
/ 03 сентября 2010

Я смотрю на postmarkapp.com, чтобы обрабатывать отправку электронной почты из моего приложения asp.net mvc 2 с использованием предоставляемой ими библиотеки .net: библиотека postmark-dotnet

В своей документации они упоминают, что отправка электронных писем с вложениями может занять некоторое время, и лучше сделать это в фоновом режиме. Для моего приложения я мог бы отправлять пользователям от 10 до 500 персонализированных электронных писем, некоторые с вложениями в пакете.

  • Каков наилучший способ сделать эту фоновую обработку неблокирующим способом для администратора, который инициировал создание и отправку этих сообщений электронной почты в ASP.Net MVC?

  • Что произойдет, если они нажмут «создать и отправить электронную почту» 500 пользователям и закроют браузер до завершения этого процесса?

Спасибо за любую помощь! Новое в ASP.Net MVC

1 Ответ

17 голосов
/ 03 сентября 2010

Вы можете создать новую тему и отправить письма в этой теме:

[HttpPost]
[Authorize(Roles = "Administrator")]
public ActionResult SendMails()
{
    new Thread(() => 
    {
        // Send the emails here
    }).Start();
    return View();
}

Если пользователь закроет браузер, этот поток будет продолжать работать до тех пор, пока он не завершит работу или пока не закроется AppDomain. Действие немедленно вернет представление и не будет блокировать.

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

Если вы хотите более надежное решение, вы можете взглянуть на MSMQ . И вот учебник , который должен быстро начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...