2013-05-03 68 views
0

我想在我的應用程序中使用MvcMailer。我創建了一個名爲MyMailer的新類庫項目。現在我想在我的MVC應用程序中使用它。McvMailer沒有看到視圖

// mailer  
public class MyMailer : MailerBase, IEdoctorMailer 
{ 
    public MyMailer() 
    { 
     MasterName = "_Layout"; 
    } 

    public virtual MvcMailMessage Invitation() 
    { 
     //ViewBag.Data = someObject; 
     var msg = Populate(x => 
     { 
      x.Subject = Labels.Invitation; 
     x.ViewName = "Invitation"; 
     x.From = new MailAddress("[email protected]"); 
     x.To.Add("[email protected]"); 
     }); 

     return msg; 
    } 
} 

//mvc controller 
IMyMailer mailer = new MyMailer(); 
var inv = mailer.Invitation(); 
inv.Send(new DefaultSmtpClient()); // see below 

public class DefaultSmtpClient : SmtpClient, ISmtpClient 
{ 
    public DefaultSmtpClient() : base("smtp.gmail.com", 587) 
    { 
     EnableSsl = true; 
     UseDefaultCredentials = false; 
     Credentials = new NetworkCredential("login", "pass");   
    } 

    public void SendAsync(MailMessage mailMessage) 
    { 
     throw new NotImplementedException(); 
    } 
} 

在MyMailer項目Views/MyMailer/Invitation.cshtml有一個與它的一些文本文件。

當我發送它實際到達的電子郵件。但這個邀請視圖不包括在內(根本沒有任何內容)。我認爲這是因爲Send方法是從mvc項目執行的,但這只是我的猜測。

我甚至在Views/MyMailer/_Layut.cshtml --> RenderBody()中設置了一個斷點,但它從來沒有涉足過它。

我應該怎麼做來包含視圖?

回答

2

由於您是MvcMailer視圖,因此您必須通過覆蓋ViewEngine或VirtualPathProvider來告訴MVC項目在何處以及如何找到它們。

+0

你能否提供更多關於如何做到這一點的細節? – gisek 2013-05-03 20:36:56

+0

這應該把你放在正確的軌道上。 http://stackoverflow.com/a/4573845/1036187 – rivarolle 2013-05-03 20:41:55

+0

你也可以使用這個包來節省一些時間:https://github.com/mcintyre321/EmbeddedResourceVirtualPathProvider :) – Pedro 2014-04-04 06:52:41