Asp.net mvc MailDefinition/MailMessage和basepath不能为空

Asp.net mvc MailDefinition/MailMessage和basepath不能为空,asp.net-mvc,mailmessage,Asp.net Mvc,Mailmessage,我正在用下面的代码创建一个MailMessage,调用mail.CreateMailMessage时收到此错误 // Create a dummy page and use it to load a dummy control so that CreateMailMessage() will not complain Page page = new Page(); DummyControl control = (DummyControl)page.LoadControl("~/DummyCont

我正在用下面的代码创建一个
MailMessage
,调用
mail.CreateMailMessage
时收到此错误

// Create a dummy page and use it to load a dummy control so that CreateMailMessage() will not complain
Page page = new Page();
DummyControl control = (DummyControl)page.LoadControl("~/DummyControl.ascx");           
MailMessage message = mail.CreateMailMessage(reciever, RecieptReplacements, dummycontrol);
值不能为null。参数名称:basepath

有人知道会出什么问题吗

public void SendReciept(string reciever)
    {
        MailDefinition mail = new MailDefinition();
        mail.IsBodyHtml = true;

        mail.BodyFileName = "~/file.txt";
        mail.Subject = "Subject";
        mail.From = "noreply@xxx.com";
        mail.Priority = System.Net.Mail.MailPriority.Normal;

        MailMessage message = mail.CreateMailMessage(reciever, RecieptReplacements, new System.Web.UI.Control());

        ...
    }

    ListDictionary RecieptReplacements
    {
        get
        {
            ListDictionary replacements = new ListDictionary();

            replacements.Add("<%Name%>", "Name");

            return replacements;
        }
    }
public void sendReceipt(字符串接收器)
{
MailDefinition mail=新邮件定义();
mail.IsBodyHtml=true;
mail.BodyFileName=“~/file.txt”;
mail.Subject=“Subject”;
mail.From=”noreply@xxx.com";
mail.Priority=System.Net.mail.MailPriority.Normal;
MailMessage=mail.CreateMailMessage(receiver,receiptreplacements,new System.Web.UI.Control());
...
}
ListDictionary接收替换
{
得到
{
ListDictionary replacements=新建ListDictionary();
替换。添加(“,”名称“);
归还替代品;
}
}

您需要创建一个Web用户控件(.ascx文件),然后加载该控件并将其传递给
CreateMailMessage

// Create a dummy page and use it to load a dummy control so that CreateMailMessage() will not complain
Page page = new Page();
DummyControl control = (DummyControl)page.LoadControl("~/DummyControl.ascx");           
MailMessage message = mail.CreateMailMessage(reciever, RecieptReplacements, dummycontrol);
看看这个,它解释了为什么,并提供了上述解决方案