加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MailDefinition / MailMessage和basepath不能为n

发布时间:2020-12-16 09:40:15 所属栏目:asp.Net 来源:网络整理
导读:我正在使用下面的代码创建一个MailMessage,并在调用mail.CreateMailMessage时收到此错误. Value cannot be null. Parameter name: basepath 谁知道什么可能是错的? public void SendReciept(string reciever) { MailDefinition mail = new MailDefinition()
我正在使用下面的代码创建一个MailMessage,并在调用mail.CreateMailMessage时收到此错误.

Value cannot be null. Parameter name: 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;
        }
    }

解决方法

您需要创建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,dummycontrol);

看看这个answer,它解释了为什么并提供了上述解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读