C# ile Toplu Mail Programı Yazmak

Merhaba arkadaşlar,  C# ‘da mail gönderme konumuza geçmeden önce mail sisteminin mantığını kısaca inceleyelim.

Mail göndermek ve almak için sunucuda  iki adet protokol  vardır;

1- Mail alma Protokolü  : E-posta sunucusundaki  mailleri almak için kullanılan protokollerdir ,POP3 ( Post Office Protocol 3 ) ve  IMAP ( Internet Mail Access Protocol ) bu protokollerin başındadır.

2- Mail Gönderme Protokolü : SMTP ( Simple Mail Transfer Protocol )

POP3 (Postahane Protokolü 3)

SMTP olarak adlandırdığımız protokollerle gönderdiğimiz mailleri ulaşana kadar yönlendirerek iletir, fakat tüm çabalarına rağmen eğer maili gönderemiyorsa bize bir hata maili döndürür, ayrıca POP3 bir posta kutusu gibi gelen mailleri sunucu içerisindeki posta kutusuna kaydeder bu sayede kullanıcı istediğinde POP3 servisi ile istediği yazılımı kullanarak bu postaları çekebilir.

IMAP (İnternet Mesaj Erişim Protokolü)

POP3 gibi, sunucuda kayıtlı olan e-postalara ulaşabilmek için kullanılan bir protokoldür. POP3'ten farkı, birden çok bilgisayardan bir mesaja ulaşılabilmesidir. POP'da bir e-postaya tek bir bilgisayardan erişim sağlanabilmektedir.

SMTP (Basit Dosya Transfer Protokolü)

E-Posta göndermek için sunucu ve istemci arasındaki ilişkiyi kuran protokoldür.

C# İle Mail Göndermek

C# da mail göndermek için System.Net.Mail; namespace’ini kullanmamız gerekiyor.

1.jpg

Resimdeki gibi using System.Net.Mail; ekledikten sonra bu namespace içindeki bazı sınıfları inceleyelim.

1-   MailMessage tbtMail = new MailMessage();

“tbtMail” adında bir mail sınıfı oluşturuyoruz.Mail gönderme işlemlerini yada mail özelliklerini artık “tbtMail” değişkeni ile yapacağız.

2-   tbtMail.From = new MailAddress("txt@tahribat.com");

“MailAddress” değişkeni ile mail’in kimden hangi adres üzerinden gönderileceğini belirleyen sınıf.

3-   tbtMail.To.Add("murid@tahribat.com");

Mail’in kime yada kimlere gideceğini belirleyen sınıftır.

4-tbtMail.Bcc.Add(("murid@tahribat.com");
Mail için birden fazla ilgili kişiye göndermek için kullanılır. Cc ile hemen hemen aynıdır fakat Bbc’de mail’i alan kişi diğer ilgili mailleri göremez buda özellikle toplu maillerde çok işe yarayan bir sınıftır.

5-tbtMail.Attachments.Add(new Attachment(@"C:\mail_eki.txt"));

Mail ile birlikte göndereceğimiz ek dosyanın bilgisini tutar.

 

6-tbtMail.Subject = "Konu";

Mail’in konu bilgisini tutar.

7-tbtMail.Body = icerik;

Mail’in içerik bilgisini tutar.

8SmtpClient smtp = new SmtpClient();

Mail’in gönderileceği SMTP sunucu ve gönderen kullanıcının bilgilerinin yazılıp, “MailMessage” türünde oluşturulan mailin gönderildiği sınıftır.

9- smtp.Credentials = new System.Net.NetworkCredential("txt@tahribat.com", "sifrem");

Mail’i gönderen kullanıcının kimlik bilgilerini tutar.

10- smtp.Port = 25;

SMTP sunucusunun port bilgisini tutar. Örn: gmail için port 587’dir

11- smtp.Host = "smtp.gmail.com";

SMTP sunucusunun isim bilgisini tutar.

12- smtp.EnableSsl = true;

Sunucu SSL(‘Secure Socket Layer’,’İnternet Şifreleme Protokolü’)  istiyorsa bu değer ‘true’ olacak istemiyorsa ‘false’yapacağız.

13- smtp.SendAsync(tbtMail, (object)tbtMail);

Mail’i gönderilene kadar çalışan “thread” kapanmaz, gönderme işlemi tamamlandıktan sonra kapatılır.

14- smtp.Send(tbtMail);

Mail’i gönderme işlemini yapar. Sunucuya göre “Send” ya da “SendAsync” metodlarından birisi kullanılır.

Tarih:
Hit: 7090
Yazar: TxT



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.