2013-04-26 31 views
4

我正在使用MVCMailer並嘗試從WebApi發送郵件,但郵件總是以空信息到達。Mvc.Mailer發送空身郵件C#webApi

的觀點是在/Views/Account/CreateUser.cshtml

,這是我的代碼

public class Account: MailerBase 
{ 

    public MvcMailMessage CreateUser(CreateNewAccount model) 
    { 
     return Populate(x => 
          { 
           x.Subject = model.Subject; 
           x.ViewName = "CreateUser"; 
           x.To.Add(model.Email); 
           ViewData.Model = model; 
          }); 
    } 

當我從經典的MVC控制器發送一封電子郵件,郵件到達正確的,但是從APiControler發郵件正文爲空。

[RESOLVE] 視圖必須位於主視圖文件夾中,而不是位於區域中。在我的情況/Views/Account/CreateUser.cshtml

+0

其中是apicontroller類? – 2013-04-26 08:48:24

+0

我的ApiController在Controllers.Api中,我有像這樣的routeTemplate:「api/{controller}/{action}/{id}」的自定義路由, – mir89 2013-04-26 08:53:31

+0

也遇到了這個問題。從http處理程序發送。 – nVentimiglia 2013-08-31 19:02:14

回答

1

我想我想出了一個解決方法(花了我幾個小時的挖掘)。就我而言,我有:

  • 一個Web API項目暴露出REST端點
  • 包含電子郵件模板(視圖)的MvcMailer MVC項目

的觀點根本不從Web API發現項目,因爲它們位於引用程序集(MvcMailler項目)中。這顯然是一個非常普遍的問題。 我通過安裝EmbeddedResourceVirtualPathProvider Nuget軟件包(https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider)解決了這一問題,並且它幾乎可以開箱即用!

爲了更好地理解這是怎麼回事:

希望它有助於:)