MailDefinition 클래스에 System.web.ui.control이 필요한 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/744117

  •  09-09-2019
  •  | 
  •  

문제

MailDefinition 클래스에서 "CreateMailMessage"메소드를 호출하여 MailMessage 객체를 작성할 때 세 번째 매개 변수는 Type System.web.ui.control의 객체입니다.

MailDefinition mail = new MailDefinition();

ListDictionary replacements = new ListDictionary();
replacements.Add("<%myname%>", "John");

mail.BodyFileName = "~/App_Data/Emails/SomeEmail.txt";
mail.From = "me@example.com";
mail.Subject = "Hello";

MailMessage message = mail.CreateMailMessage("example@example.com,", replacements, );

왜 그런 겁니까?
그리고 그 유형의 객체가없는 경우 대신 무엇을 통과해야합니까? 새로운 제어 개체?

Control control = new Control();

업데이트

사용하는 것이 좋습니다 면도칼 이메일 템플릿을 구축합니다. 그것은 훌륭한 구문을 가지고 있고, 훌륭하게 작동하며, 이상한 종속성이 없습니다!

도움이 되었습니까?

해결책

보통 당신은 단지지나갑니다 this 제어로.

MailMessage message = mail.CreateMailMessage("example@example.com,", replacements, this);

이유에 관해서는 MSDN의 말은 다음과 같습니다.

소유자 매개 변수는 어떤 컨트롤이 우편 검색 제어의 부모인지 나타냅니다. BodyFilename 속성에 지정된 텍스트 파일을 검색 할 디렉토리를 결정합니다.

다른 팁

그만큼 CreateMailmessage 기능은 내부적으로 지정된 것을 사용합니다 제어 쿼리 authRelativeTemplatesourcedirectory 재산과 그 오픈 파일 신체의 내용을 읽는 방법 ( 바디 필레나 의 속성 우편 검색).

나에게는 디자인이 좋지 않고 불필요한 꽉 조여진 것 같습니다.

당신은 또한 이것을 할 수 있습니다 :

MailMessage message = this.Mail.CreateMailMessage("no-reply@example.com", dictionary, new System.Web.UI.Control());

나는 사용하고있다 new LiteralControl() 내 메시지가 워크 플로에서 전송되기 때문에 세 번째 매개 변수의 경우. 효과가있다. 그러나 나는 "왜"에 대한 답이 없습니다.

컨트롤에 구속력이없는 경우 MailDefinition 클래스를 전혀 사용할 필요가 없을 것 같습니다. SMTP를 통해 이메일을 보내려면 system.net.mail.mailmessage와 함께 System.net.mail.smtpclient를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top