アプリケーションで 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()
が、そこに踏み込むことはありませんでした。
ビューを含めるにはどうすればよいですか?