2014-02-20 2 views
4

아래 코드로 MailMessage을 만들고 있는데 mail.CreateMailMessage을 호출 할 때이 오류가 발생합니다.MailDefinition/MailMessage 및 basepath는 null이 될 수 없습니다.

값은 null 일 수 없습니다. 매개 변수 이름 : 기본 경로

누구나 잘못된 정보 일 수 있습니다.

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 환영합니다. 도움이 되었기 때문에 기쁩니다. –

관련 문제