Если вам не нужно перенаправлять страницу, после рендеринга содержимого страницы (из вашего примера кода это не похоже на то, что вам нужно), тогда вы можете использовать Response.Filter.
С макушки головы это будет выглядеть примерно так:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Filter = new SmtpFilter(Response.Filter);
}
Класс SmtpFilter, это просто класс, который наследуется от объекта Stream.
Основным методом будет метод Write. Ниже приведен код для переопределения метода Write (...), отправки почты SMTP и продолжения обработки.
public override void Write(byte[] buffer, int offset, int count) {
// get the html
string content= System.Text.Encoding.UTF8.GetString(buffer, offset, count);
MailMessage mail = new MailMessage();
mail.From = new MailAddress("test@test.com");
mail.To.Add("steve@test.com");
mail.IsBodyHtml = true;
mail.Subject = "Test";
mail.Body = content;
SmtpClient smtp = new SmtpClient("1111");
smtp.Send(mail);
buffer = System.Text.Encoding.UTF8.GetBytes(HTML);
this.Base.Write(buffer, 0, buffer.Length);
}
Если вам нужна дополнительная помощь по Response.Filters, вы можете зайти в нее через Google. Первая статья, которую я нашел, была в VB.NET, но все еще полезна:
http://aspnetlibrary.com/articledetails.aspx?article=Use-Response.Filter-to-intercept-your-HTML