0

アプリケーションで 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()が、そこに踏み込むことはありませんでした。

ビューを含めるにはどうすればよいですか?

4

1 に答える 1