Существуют ли пакеты электронной почты MVC, не требующие контекста HTTP?

Мы отправляем электронные письма из нашего веб-приложения ASP.NET MVC 3 Razor.

В настоящее время мы используем ActionMailer.NET.

Я просмотрел MvcMailer.

Проблема с обоими заключается в том, что им нужен Http-контекст для выполнения.

Проблема в том, что я хочу отправлять электронные письма асинхронно. Теперь я знаю, что вы можете асинхронно выполнять фактическую отправку (например, вызов SMTP), но я хочу, чтобы весь процесс отправки электронной почты был асинхронным, например:

public ActionResult DoSomething(Something something)
{
   _db.Save(something);

   Task.Factory.StartNew(() => {
      new MailController().DoSomething().Send(something);
   });

   return RedirectToAction("Index");
}

В методе «DoSomething» я снова запрашиваю базу данных, делаю другие вещи и т. д.... я хочу, чтобы все это было асинхронным - поэтому весь вызов заключен в задачу, а не просто делает .SendAsync(). Надеюсь, это имеет смысл.

Вышеприведенный пример — это ActionMailer, и он ломается, потому что в порожденном потоке отсутствует контекст HTTP.

Кто-нибудь знает, как я могу заставить это работать, или, альтернативно, другой пакет, который не полагается на существование контекста HTTP?

Я не уверен, зачем нужен HTTP-контекст — здесь нет маршрутизации запросов, просто анализируется представление, которое находится в файловой системе, в HTML.

11
задан mattytommo 30 May 2012 в 07:15
поделиться