Add a Form to your Page:
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(sendmail), new Object());
public void sendmail(object o)
{
System.Web.UI.Page() pageHolder = new System.Web.UI.Page()
{AppRelativeTemplateSourceDirectory = HttpRuntime.AppDomainAppVirtualPath };
System.Web.UI.HtmlControls.HtmlForm form = new System.Web.UI.HtmlControls.HtmlForm();
UserControl cntrl = new Page().LoadControl("~/mycontrol.ascx") as UserControl;
form.Controls.Add(cntrl );
pageHolder.Controls.Add(form);
StringWriter stringwriter = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, stringwriter, false);
SendEmailUsingNetMail(stringwriter);
}
Also, I wrote an OSS project to do this called ucajax, the lib was intended to be consumed with web services, but there is no reason you can't call the methods directly to render controls.