1

メールの送信にポスタルを使用しています。私のアプリケーションは ASP.net MVC アプリケーションです。Autofac (MVC5 統合) を使用しています

Postal を次のように設定しました。

        dynamic email = new Email("TemplateName");
        email.To = "test@email.com";
        email.From = "sendertest@email.com";

        email.TemplateValue = "This is a value";

        var service = new EmailService();

        HostingEnvironment.QueueBackgroundWorkItem(ct =>
        {
            service.Send(email);
        });

これは次のエラーで失敗します。

タイプ 'System.InvalidOperationException' の例外が Autofac.Integration.Mvc.dll で発生しましたが、ユーザー コードで処理されませんでした

追加情報: HttpContext が使用できないため、要求の有効期間スコープを作成できません。

   at Autofac.Integration.Mvc.RequestLifetimeScopeProvider.GetLifetimeScope(Action`1 configurationAction)  
   at Autofac.Integration.Mvc.AutofacDependencyResolver.get_RequestLifetimeScope()  
   at Autofac.Integration.Mvc.AutofacDependencyResolver.GetService(Type serviceType)  
   at System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create(ControllerContext controllerContext, Type type)  
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)  
   at Postal.EmailViewRenderer.RenderView(IView view, ViewDataDictionary viewData, ControllerContext controllerContext, ImageEmbedder imageEmbedder)  
   at Postal.EmailViewRenderer.Render(Email email, String viewName)  
   at Postal.EmailService.CreateMailMessage(Email email)  
   at Postal.EmailService.Send(Email email)  
   at CallSite.Target(Closure , CallSite , EmailService , Object )  
   at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2[T0,T1](CallSite site, T0 arg0, T1 arg1)  
   at EmailSender.<>c__DisplayClass3_0.<Handle>b__0(CancellationToken ct) in .....EmailSender.cs:line 42  
   at System.Web.Hosting.HostingEnvironment.<>c__DisplayClass91_0.<QueueBackgroundWorkItem>b__0(CancellationToken ct)  
   at System.Web.Hosting.BackgroundWorkScheduler.<RunWorkItemImpl>d__7.MoveNext()  

を取り出すservice.Send(email);QueueBackgroundWorkItem動作します。

が利用できないためだと理解してHttpContext.Currentいますが、バックグラウンド スレッドで Postal を使用してメールを送信する方法はありますか?

4

2 に答える 2