Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }