Going one step further we can validate the domain names by testing each row to see if there is a web site on the end with this simple Dynamic Column in Data Sync 3.0.
using System.Net;
class DataSourceRowOverride : DataSourceRowInternal
{
public string EmailDomain { get { return GetDomainName(Email); } }
public bool IsValidDomainName { get { return IsValidDomain(EmailDomain); } }
public string GetDomainName(string value)
{
var expression = new Regex(@"[A-Z0-9._%-]+@([A-Z0-9.-]+\.[A-Z]{2,4})", RegexOptions.IgnoreCase);
var match = expression.Match(value);
if ( match.Success )
return match.Result("$1");
return value;
}
public bool IsValidDomain(string domainName)
{
try
{
var request = HttpWebRequest.Create("http://www." + domainName);
request.Timeout = 1000;
using(var response = request.GetResponse())
{
}
return true;
}
catch(WebException)
{
return false;
}
}
}