protected void btnSaveUser_Click(object sender, EventArgs e) { Page.Validate(); if (IsValid) { string strMessage = "<html>"; strMessage += "<html><body bgcolor='#FFFFFF'><center><table width='90%' border='0' bgcolor='#FFFFFF' style='border: 4px solid #CCCCCC;'><tr><td>"; strMessage += "<span style='FONT-SIZE: 10px; COLOR: #003399; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif'>"; strMessage += txtName.Value=="" ? "<strong>From:</strong> No Name Given <BR>" : "<strong>From:</strong> " + txtName.Value + "<br>"; strMessage += txtPhone.Value=="" ? "<strong>Phone:</strong> No Phone Given<BR>" : "<strong>Phone:</strong> " + txtPhone.Value + "<br>"; strMessage += txtEmail.Value=="" ? "<strong>Email:</strong> No Email Given<HR>" : "<strong>Email:</strong> <a href='Mailto:" + txtEmail.Value + "'>"+ txtEmail.Value + "</a><hr>"; strMessage += txtComment.Value=="" ? "<strong>Comment:</strong><br>No Comment Given<BR>" : "<strong>Comment:</strong><br> " + StringHelper.HTMLfy(txtComment.Value); strMessage += "</span></td></tr></table></center></body></html>"; MailMessage mail = new MailMessage(); mail.To = GetEmail(int.Parse(selTopic.Value)); mail.From = "contact@someplace.com"; mail.Subject = "Inquiry - " + GetDescription(int.Parse(selTopic.Value)); mail.BodyFormat = MailFormat.Html; mail.Body = strMessage; mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", ConfigReader.GetMailUser()); //set your username here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", ConfigReader.GetMailPassword()); //set your password here SmtpMail.SmtpServer = ConfigReader.GetMailServer(); //your real server goes here SmtpMail.Send( mail ); Response.Redirect(Pages.ContactConfirm, true); }This does involves sending email. Other than validating against the DNS server there is really no reliable way to validate email all the way unless you send something out since some mail servers poll for delivery with a delay (1 minute or so), or all depends on the smtp server load at the time so even the method above will give you a false positive. Perhaps sending out and checking for bounces is the most reliable way. In that case you can hide a code (record id, for example) in the header of the email, so when it bounces you can automate the read of those headers and get a report of bad emails.