Мы отправляем электронные письма из нашего веб-приложения 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.