C# E-Mail Kontrolü – Net.Mail , yazımız ile c sharp eğitimlerimize devam ediyoruz. Bu yazımızda yazılan bir e-mail adresinin doğru formatta yazılıp yazılmadığını kontrol etmeyi göreceğiz. Bu işlem için genelde regex yani regular expression sınıfı kullanılır ancak biz bu regex’i kullanmadan çoook daha basit bir yöntem ile yapacağız. Gelin C# E-Mail Kontrolü – Net.Mail nasıl yapacağımızı görelim.
C# E-Mail Kontrolü – Net.Mail
Bu işlem için öncelikle aşağıdaki namespace’i ekleyelim.
using System.Net.Mail;
Öncelikle net.mail sınıfına bir göz atalım.
System.Net.Mail namespace için bir Basit Posta Aktarım Protokolü (SMTP) sunucusuna teslim elektronik posta göndermek için kullanılan sınıfları içerir. Bu namespace ile program üzerinden mail göndertirken maile dosya ekleri yani attachment de ekleyebiliyorsunuz.
Evet. Kısaca namespace’imize değindikten sonra kodlarımıza geçelim.
public static bool Email_Format_Kontrol(string email) { try { MailAddress m = new MailAddress(email); return true; } catch { return false; } }
Eveeeet, hepsi bu kadar. Ne kadar basit değil mi? Kodlarımızı açıklamamız gerekirse;
System. Net.Mail namespace’inin mail gönderme işlemleri için kullanıldığını söylemiştik. Bu namespace içerisinde mail gönderme işlemleri sırasında kullanılan bir sınıf olan MailAddress sınıfı sayesinde gönderdiğimiz verinin mail olup olmadığını kolayca anlayabiliyoruz. Yani aslında windows mail kontrolünü bizim için yapmış oluyor. Bu sayede regex ile uğraşmak zorunda kalmadan işimizi kolayca halledebiliyoruz. Kaldı ki bence en sağlam kontrol de bu şekilde yapılan kontroldür.
Gelen bir yorum üzerine bir List<T> içindeki birden çok maili döngü ile nasıl kontrol edebileceğimiz hakkında bir kod bloğu paylaşmak istiyorum. Yukarıdaki kodlarımızı aşağıdaki gibi düzenleyelim.
public static void Email_Format_Kontrol(List< string> email) { string mail = ""; for (int i = 0; i < email.Count; i++) { try { mail = email[i]; MailAddress m = new MailAddress(email[i]); } catch { MessageBox.Show("Hatalı mail adresi bulundu. Hatalı mail adresi: " + mail); } } } // Aşağıdaki gibi kullanılabilir. List<string> mailler = new List<string>(); mailler.Add("mustafabukulmez3446@gmail.com"); mailler.Add("mustafabgmaiom"); mailler.Add("mustafabukulmez3446@gmail.com"); Email_Format_Kontrol(mailler);
Burada, 2. sıradaki hatalı mail adresi için mesaj verilecektir ancak 3. sıradaki mail adresinin kontrolü de yapılacaktır. Yani bu metodumuz List<T> içindeki tüm hatalı mailleri söyleyecektir. İlk hatalı mailde döngünün durmasını isteseniz MessageBox satırı altına Break; yazabilirsiniz. Bu döngüyü sonlandıracaktır.
Mail kontrolü için yapılan regex desenleri çook karışıktır. Şöyle bakınca kolay kolay anlayamazsınız. Bu sebeple bu çorba gibi regex deseni ile uğraşmak yerine güzel ve gücenli bir kısayol kullanarak amacımıza ulaşıyoruz. Bu mail regex’i nasıl birşey ki derseniz de;
string pattern = @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@" + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
İnternetten bulduğum bir mail regex deseni böyle…
C# E-Mail Kontrolü – Net.Mail yazımız da bu kadar dostlar. Diğer yazılarımızda görüşmek üzere…
C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız. Buraya tıklayarak Github Projeme ulaşabilirsiniz.
Sağlıcakla ve takipte kalın.
Hocam textbox kontrolü yapacağım fakat nasıl yapacağımı anlamadım ?
TExtbox kontrolü yapacağım derken ne demek istediğinizi anlayamadım?
Yukarıdaki ilk metodu kullanarak textbox’a yazılan adresin doğruluğu kontrol ettirebilirsiniz. MEtoda parametre olarak textbox1.Text gönderebilirsiniz.
Peki bu metoda birden fazla mail adresi gönderebilir miyiz? noktalı virgül ile ayrılmış şekilde örn: abc@abc.com; abc2@abc2.com
Merhaba,
Ben hızlıca bir deneme yaptım. Aralara virgül atarak 3 mail adresi yazdım ancak bir tanesini mail formatında değildi. Bu şekilde deneme yapınca hepsini doğru olarak gördü. Yani Catch bloğuna düşmedi. Kodlarda biraz değişiklik yaparak döngü ile List yada dizi olarak gönderilen mail listesinin tamamını kontrol edebiliriz.
Ben aşağıdaki gibi bir düzenleme yaptım. Siz kendi projenize göre düzenleyebilirsiniz.
List mailler = new List();
mailler.Add(“mustafabukulmez3446@gmail.com”);
mailler.Add(“mustafabgmaiom”);
mailler.Add(“mustafabukulmez3446@gmail.com”);
Email_Format_Kontrol(mailler);
public static void Email_Format_Kontrol(List string> email)
{
string mail = “”;
for (int i = 0; i < email.Count; i++)
{
try
{
mail = email[i];
MailAddress m = new MailAddress(email[i]);
}
catch
{
MessageBox.Show("Hatalı mail adresi bulundu. Hatalı mail adresi: " + mail);
}
}
}
Kolay gelsin…