2013-04-26 54 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)解决了这一问题,并且它几乎可以开箱即用!

为了更好地理解这是怎么回事:

希望它有助于:)