2014-02-20 2 views
4

Я создаю MailMessage с кодом ниже, и я получаю эту ошибку при вызове mail.CreateMailMessage.MailDefinition/MailMessage и basepath не могут быть пустыми

Значение не может быть пустым. Имя параметра: базовый путь

Кто-нибудь знает, что может быть неправильным?

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

     mail.BodyFileName = "~/file.txt"; 
     mail.Subject = "Subject"; 
     mail.From = "[email protected]"; 
     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; 
     } 
    } 

ответ

1

Вам нужно создать элемент управления веб-пользователя (.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); 

Взгляните на эту answer, что объясняет, почему и обеспечивает выше решение.

+0

Ах, спасибо большое! – vsdev

+0

@vsdev Добро пожаловать, я рад, что это помогло. –

Смежные вопросы