Why does the MailDefinition class require a System.Web.UI.Control?

John Bubriski picture John Bubriski · Apr 13, 2009 · Viewed 8.9k times · Source

When creating a MailMessage object by calling the "CreateMailMessage" method on the MailDefinition class, the third parameter is an object of 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 = "[email protected]";
mail.Subject = "Hello";

MailMessage message = mail.CreateMailMessage("[email protected],", replacements, );

Why is that?
And in the case that I don't have an object of that type, what should I pass instead? Just a new Control object?

Control control = new Control();

UPDATE

I would highly recommend using Razor to build email templates. It has great syntax, works great, and doesn't have any weird dependencies!

Answer

Andrew Hare picture Andrew Hare · Apr 13, 2009

Usually you just pass this as the control.

MailMessage message = mail.CreateMailMessage("[email protected],", replacements, this);

As for the reason why, here is what MSDN says:

The owner parameter indicates which control is the parent of the MailDefinition control. It determines which directory to search for the text file specified in the BodyFileName property.