我想在我的应用程序中使用 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();
}
}
在 MyMailer 项目中,Views/MyMailer/Invitation.cshtml
有一个文件,其中包含一些文本。
当我发送电子邮件时,它实际上到达了。但是这个 Invitation 视图不包括在内(根本没有正文)。我认为这是因为 Send 方法是从 mvc 项目中执行的,但这只是我的猜测。
我什至在 中放了一个断点Views/MyMailer/_Layut.cshtml --> RenderBody()
,但它从来没有进入过它。
我应该怎么做才能包含视图?