Breaking News
Loading...
Thursday, July 18, 2013

Kiểm tra địa chỉ email của dịch vụ Google (Gmail và tên miền Google cung cấp) có tồn tại hay không bằng C#

7/18/2013 05:45:00 PM
Dịch vụ email là rất phổ biến ngày nay, nó dùng để gửi thư và được sủ dụng phổ biến vào mục đích đăng ký tài khoản. Khi bạn viết một ứng dụng muốn người dùng đăng ký sử dụng bằng email. Vậy bạn muốn kiểm tra email của người đăng ký nhập email có tồn tại không? Sau đây sẽ giới thiệu cách kiểm tra email của dịch vụ Google (gồm Gmail và các tên miền do Google cung cấp) có tồn tại hay không.


Ở đây chúng ta sử dụng các thư viện sau để hỗ trợ việc kiểm tra email: System.Text.RegularExpressions, System.Net.Sockets, System.IO
Trong bài viết này các bạn cần lưu ý đến 2 hàm quan trong là isEmail: dùng để kiểm tra xem email nhập vào có đúng định dạng hay không, check_gmail: dùng để kiểm tra xem Gmail hoặc các dịch vụ Google cung cấp có tồn tại hay không. Cả 2 hàm này đều trả về giá trị True là nhập email đúng định dạng và email tồn tại.

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//Kiểm tra email tồn tại hay không
using System.Text.RegularExpressions;
//gmail
using System.Net.Sockets;
using System.IO;

namespace Check_Gmail_Google
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Hàm kiểm tra xem nhập email theo đúng định dạng chưa
        public static bool isEmail(string inputEmail)
        {
            inputEmail = inputEmail ?? string.Empty;
            string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                  @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                  @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
            Regex re = new Regex(strRegex);
            if (re.IsMatch(inputEmail))
                return (true);
            else
                return (false);
        }
        ///Hàm kiểm tra email có tồn tại hay không
        //Hàm kiểm tra tồn tại email của Gmail (kể cả các tên miền của các website, ex: @cadt.com.vn,@tinhte.vn ...)
        private bool check_gmail(string gmail)
        //Trả về True là gmail tồn tại
        {
            bool ketqua = false;
            TcpClient tClient = new TcpClient("gmail-smtp-in.l.google.com", 25);
            string CRLF = "\r\n";
            byte[] dataBuffer;
            string ResponseString;
            NetworkStream netStream = tClient.GetStream();
            StreamReader reader = new StreamReader(netStream);
            ResponseString = reader.ReadLine();
            dataBuffer = BytesFromString("HELO VietQuan" + CRLF);
            netStream.Write(dataBuffer, 0, dataBuffer.Length);
            ResponseString = reader.ReadLine();
            dataBuffer = BytesFromString("MAIL FROM:<tracdiaviet.com.vn@gmail.com>" + CRLF);
            netStream.Write(dataBuffer, 0, dataBuffer.Length);
            ResponseString = reader.ReadLine();
            dataBuffer = BytesFromString("RCPT TO:<" + gmail.Trim() + ">" + CRLF);
            netStream.Write(dataBuffer, 0, dataBuffer.Length);
            ResponseString = reader.ReadLine();
            if (GetResponseCode(ResponseString) == 550)
            {
                ketqua = false;
            }
            else
            {
                ketqua = true;
            }
            dataBuffer = BytesFromString("QUITE" + CRLF);
            netStream.Write(dataBuffer, 0, dataBuffer.Length);
            tClient.Close();

            return ketqua;
        }
        private byte[] BytesFromString(string str)
        {
            return Encoding.ASCII.GetBytes(str);
        }
        private int GetResponseCode(string ResponseString)
        {
            return int.Parse(ResponseString.Substring(0, 3));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (isEmail(textBox1.Text) == true)
            {
                label2.Text = "Đang kiểm tra email...";
                label2.Refresh();
                if (check_gmail(textBox1.Text) == true)
                    MessageBox.Show("Email bạn nhập vào là tồn tại""Email tồn tại");
                else
                    MessageBox.Show("Email bạn nhập vào không tồn tại""Email không tồn tại");

                label2.Text = "";

            }
            else
            {
                MessageBox.Show("Bạn nhập email sai định dạng","Email không đúng định dạng");
            }
        }
    }
}
Giao diện chương trình khi chạy bạn nhập địa chỉ email và chọn nút kiểm tra và đợi chương trình kiểm tra, tùy vào tốc độ mạng mà kiểm tra nhanh hay chậm

hinh

2 comments:

  1. Sao mình sử dụng hàm này toanf báo là true nhỉ.
    Mình thử với 1 email sai :)

    ReplyDelete

 
Toggle Footer