private static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine("resolver {host|ip address}"); return; } string hostOrAddress = args[0].ToLower(); string sDNSResult; char cFirstDigit = hostOrAddress[0]; if (cFirstDigit >= 'a' && cFirstDigit <= 'z') { sDNSResult = DNSResolver.Hostname2IP(hostOrAddress); } else { sDNSResult = DNSResolver.IP2Hostname(hostOrAddress); } //Console.Clear(); Console.ForegroundColor = ConsoleColor.Green; Console.Write("{0}", hostOrAddress); Console.ForegroundColor = ConsoleColor.White; Console.Write(" résolve sur: "); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("{0}", sDNSResult); Console.ForegroundColor = ConsoleColor.White; }
public static EmailAddressStatus CheckMailAddressValid(string emailAddress, IPAddress dnsServerAddress, out string message) { EmailAddressStatus result = EmailAddressStatus.Unkown; message = string.Empty; if (emailValidRegex.IsMatch(emailAddress)) { MXRecord[] records = DNSResolver.MXLookup(emailAddress.Substring(emailAddress.IndexOf("@") + 1), dnsServerAddress); if (records != null && records.Length > 0) { foreach (MXRecord record in records) { Socket socket = null; try { IPEndPoint remoteEP = new IPEndPoint(Dns.GetHostEntry(record.DomainName).AddressList[0], 25); socket = new Socket(remoteEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(remoteEP); message = Get_Response(socket); if (GetResponseCode(message) == 220) { SendData(socket, "HELO {0}\r\n".FormatWith(record.DomainName)); message = Get_Response(socket); if (GetResponseCode(message) == 250) { SendData(socket, "MAIL FROM:<{0}>\r\n".FormatWith("*****@*****.**")); message = Get_Response(socket); if (GetResponseCode(message) == 250) { SendData(socket, "RCPT TO:<{0}>\r\n".FormatWith(emailAddress)); message = Get_Response(socket); if (GetResponseCode(message) == 250) { return(EmailAddressStatus.Valid); } if (message.IndexOf("denied") > 0) { SendData(socket, "QUIT\r\n"); socket.Close(); return(EmailAddressStatus.DenyAccess); } return(EmailAddressStatus.AccountNotExists); } } } } catch (TimeoutException) { result = EmailAddressStatus.Timeout; } catch (Exception e) { message = e.Message; } finally { if (socket != null && socket.Connected) { socket.Close(); } } } } else { result = EmailAddressStatus.InvalidDomain; } } else { result = EmailAddressStatus.InvalidEmailFormat; } return(result); }