Ở đâ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
Sao mình sử dụng hàm này toanf báo là true nhỉ.
ReplyDeleteMình thử với 1 email sai :)
Email phải là gmail nha bạn
ReplyDelete