邮箱有效性验证 C#,net

1.检测邮箱格式 2.获取邮箱的服务地址 3.创建链接 4.发送helo命令 5.写入from 和 to 
  public int CheckEmailAndReturnCode(string mailAddress,out string Errstr)
        {
            Errstr = "";
            List<string> Result = new List<string>();
            Regex reg = new Regex(@"\w+([-+.‘]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");

            if (!reg.IsMatch(mailAddress))
            {
                return 2;
                //return "Email地址形式上就不对";
            }


            string mailServer = getMailServer(mailAddress);

            if (mailServer == null)
            {
                return 3;
                //return "邮件服务器不存在";

            }
            //this.textBoxShow.Text += "解析出域名" + strDomain + "的mx记录:" + mailServer + "\r\n";
            tcpc = new TcpClient();      //为 TCP 网络服务提供客户端连接。
            tcpc.NoDelay = true;
            tcpc.ReceiveTimeout = 3000;
            tcpc.SendTimeout = 3000;
            bb = new byte[512];

            try
            {

                Connect(mailServer);//创建连接

                stringTosend = "helo " + mailServer + "\r\n";// 写入HELO命令
                //this.textBoxShow.Text += "发送:" + stringTosend;                
                flag = SendCommand(stringTosend);
                if (flag == false)
                {
                    return 4;
                    ////timer1.Enabled = false;
                    //return "写入HELO命令失败";
                }



                stringTosend = "mail from:<webmaster@aol.com>" + "\r\n";
                //this.textBoxShow.Text += "发送:" + stringTosend;
                flag = SendCommand(stringTosend);
                if (flag == false)
                {
                    return 5;
                    //return "写入Mail From命令";
                }
                stringTosend = "rcpt to:<" + mailAddress + ">" + "\r\n";//写入RCPT命令,这是关键的一步,后面的参数便是查询的Email的地址
                //this.textBoxShow.Text += "发送:" + stringTosend;
                flag = SendCommand(stringTosend);

                if (flag == true)
                {
                    //邮箱存在
                    return 1;
                    //return "邮箱存在";
                }
                else
                {
                    return 6;
                    //邮箱不存在
                    //return "邮箱不存在";
                }
 

            }
            catch (Exception ee)
            {
                Errstr = ee.Message;
                //MessageBox.Show(ee.ToString());   //发生错误或邮件服务器不可达
                return 7;
            }
        }
 public string getMailServer(string strEmail)
        {
            string strDomain = strEmail.Split(@)[1];
            ProcessStartInfo info = new ProcessStartInfo();
            info.UseShellExecute = false;
            info.RedirectStandardInput = true;
            info.RedirectStandardOutput = true;
            info.FileName = "nslookup";
            info.CreateNoWindow = true;
            info.Arguments = "-type=mx " + strDomain;
            Process ns = Process.Start(info);
            StreamReader sout = ns.StandardOutput;
            Regex reg = new Regex("mail exchanger = (?<mailServer>[^\\s].*)");
            string strResponse = "";
            while ((strResponse = sout.ReadLine()) != null)
            {
                Match amatch = reg.Match(strResponse);
                if (reg.Match(strResponse).Success) return amatch.Groups["mailServer"].Value;
            }
            return null;
        }

 

 private bool SendCommand(string command)
        {
            string read01 = "";
            try
            {

                arrayToSend = Encoding.UTF8.GetBytes(command.ToCharArray());
                s.Write(arrayToSend, 0, arrayToSend.Length);
                len = s.Read(bb, 0, bb.Length);
                read = Encoding.UTF8.GetString(bb);
                //read01 = Encoding.Default.GetString(bb, 0, len);
                //this.textBoxShow.Text += "收到:" + read.Substring(0, len) + "\r\n";
            }
            catch (IOException e)
            {
                return false;  //MessageBox.Show(e.ToString());                //MessageBox.Show(e.ToString());
            }
            if (read.StartsWith("250"))
            {
                return true;
            }

            else
            {
                return false;
            }

        }

 

邮箱有效性验证 C#,net

上一篇:在 windows 和 linux 环境下,SimpleDateFormat 转换格式不一致的问题


下一篇:c#接口显式和隐式实现的区别