Следующее проверит, что адрес электронной почты имеет правильную форму (а не то, что на самом деле существует):
private bool isEmail(string inputEmail)
{
Regex re = new Regex(@"^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}$",
RegexOptions.IgnoreCase);
return re.IsMatch(inputEmail);
}
Я обновил это с помощью более простого выражения (включая нечувствительность к регистру), чтобы, надеюсь, сделать его немного яснее.
Ниже приведены основы кода, которые подтвердят, что домен действительно существует:
private bool isRealDomain(string inputEmail)
{
bool isReal = false;
try
{
string[] host = (inputEmail.Split('@'));
string hostname = host[1];
IPHostEntry IPhst = Dns.GetHostEntry(hostname);
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25);
Socket s = new Socket(endPt.AddressFamily,
SocketType.Stream, ProtocolType.Tcp);
s.Connect(endPt);
s.Close();
isReal = true;
}
catch (<specific exceptions here>)
{
}
return isReal;
}
Вы можете сделать гораздо больше, например, пытаться подключиться, чтобы убедиться, что домен получит почту. Кроме того, вам нужно убедиться, что вы уловили необходимые исключения и правильно их обрабатываете.