I think the best way to do it, rather than a hardcoded list of TLDs (which would have to include every country's two-letter ISO code) would be to simply perform an MX record lookup against your local nameserver for the domain in question. If it resolves, you at least you know you have a valid domain; if it doesn't, then you don't. That way you don't have addresses like "asdk@dsfljkalasdk.com" pass through as valid.