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!
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.