**The three main levels of email validation:**

1) regular expression check for a properly formatted email address [email protected]

2) email domain check against MX records to see if the domain name has an email service

3) sending a confirmation email with a confirmation link or code

**Level 1:**

In Visual Studio, you can use the "Regular Expression Validator". And in the "ValidationExpression" property you can click on the "..." button that has a wizard to add in the regular expression format for email addresses.

**Level 2:**

Here is my C# code below to use nslookup to verify whether an email domain has valid MX records. Runs quick and ok on Win 2008 R2 and Win 7.

    using System.Net.Mail;
    using System.Diagnostics;

    public static bool checkMXRecords(string email) 
        {
            MailAddress addr = new MailAddress(email);
            string domain = addr.Host;

            string command = "nslookup -querytype=mx " + domain;
            ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c " + command);

            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.UseShellExecute = false;

            procStartInfo.CreateNoWindow = true;

            Process proc = new Process();
            proc.StartInfo = procStartInfo;
            proc.Start();
            string result = proc.StandardOutput.ReadToEnd();

            if (result.ToLower().Contains("mail exchanger"))
            {
                return true;
            }
            else return false;

         } // checkMXRecords

another option is to use the Arsofttools nuget package but it may be slow on Windows Server 2008 R2 as I have experienced but runs quick on Win 7.

**Level 3:**

For email confirmation, you can either generate an email specific hex url (using encryption functions) etc http://domain.com/validateEmail?code=abcd1234 to validate the email address when the user clicks on it. There is no need to store this url in memory.