我想在我的应用程序中使用MvcMailer。我创建了一个名为MyMailer的新类库项目。现在我想在我的MVC应用程序中使用它。
// 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("xxx@gmail.com");
x.To.Add("yyy@gmail.com");
});
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();
}
}
在Views/MyMailer/Invitation.cshtml
的MyMailer项目中,有一个文件中包含一些文字。
当我发送电子邮件时,它实际上已到达。但是这个邀请视图不包括在内(根本没有身体)。我认为这是因为发送方法是从mvc项目执行的,但这只是我的猜测。
我甚至在Views/MyMailer/_Layut.cshtml --> RenderBody()
中设置了一个断点,但它从未涉足过它。
我应该怎么做才能包含视图?
答案 0 :(得分:2)
由于您的MvcMailer视图位于类库中,因此您必须通过覆盖ViewEngine或VirtualPathProvider告诉MVC项目在何处以及如何找到它们。