C# ile Toplu Mail Programı Yazmak Merhaba arkadaşlar, C# 'da mail gnderme konumuza geçmeden nce mail sisteminin mantığını kısaca inceleyelim. Mail gndermek 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 bu protokollerin başındadır. 2- Mail Gnderme Protokolü : SMTP POP3 (Postahane Protokolü 3) SMTP olarak adlandırdığımız protokollerle gnderdiğimiz mailleri ulaşana kadar ynlendirerek iletir, fakat tüm çabalarına rağmen eğer maili gnderemiyorsa bize bir hata maili dndü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 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 E-Posta gndermek için sunucu ve istemci arasındaki ilişkiyi kuran protokoldür. C# İle Mail Gndermek C# da mail gndermek için System. Net. Mail; namespace'ini kullanmamız gerekiyor. 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 gnderme işlemlerini yada mail zelliklerini artık "tbtMail" değişkeni ile yapacağız. 2- tbtMail. From = new MailAddress ; "MailAddress" değişkeni ile mail'in kimden hangi adres üzerinden gnderileceğini belirleyen sınıf. 3- tbtMail. To. Add ; Mail'in kime yada kimlere gideceğini belirleyen sınıftır. 4-tbtMail. Bcc. Add ; Mail için birden fazla ilgili kişiye gndermek için kullanılır. Cc ile hemen hemen aynıdır fakat Bbc'de mail'i alan kişi diğer ilgili mailleri gremez buda zellikle toplu maillerde çok işe yarayan bir sınıftır. 5-tbtMail. Attachments. Add(new Attachment ; Mail ile birlikte gndereceğ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 gnderileceği SMTP sunucu ve gnderen kullanıcının bilgilerinin yazılıp, "MailMessage" türünde oluşturulan mailin gnderildiği sınıftır. 9- smtp. Credentials = new System. Net. NetworkCredential ; Mail'i gnderen 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 istiyorsa bu değer 'true' olacak istemiyorsa 'false'yapacağız. 13- smtp. SendAsync(tbtMail, tbtMail); Mail'i gnderilene kadar çalışan "thread" kapanmaz, gnderme işlemi tamamlandıktan sonra kapatılır. 14- smtp. Send ; Mail'i gnderme işlemini yapar. Sunucuya gre "Send" ya da "SendAsync" metodlarından birisi kullanılır. Evet arkadaşlar şimdi elimizdeki bu verilerle basit ama işlevsel bir toplu mail programı yazalım. Form Design alanında 6 textbox, 1 listbox,3 buton ve 1 OpenFileDialog ekliyoruz ve değişkenleri aşağıdaki gibi ayarlıyoruz. 1. ci Textbox : Name = "txtSunucu" 2. ci Textbox : Name = "txtMail" 3. cü Textbox: Name = "txtParola" , PasswordChar = " " 4. cü Textbox: Name = "txtKonu" 5. ci Textbox : Name = "txtMesaj" , Multiline = "true" 6. cı Textbox : Name = "txtPort" 7. ci TextBox : Name = "txtGad" 1 Tane Listbox : Name = "lblMail" 3 Tane Button; 1. ci Button : Name = "btnYukle" 2. ci Button : Name = "btnTemizle" 3. cü Button : Name = "btnGonder" 1 Tane OpenFileDialog : Name = "dlgDosyaYukle" Not : Dışarıdan mail list çekeceğimiz için yani yükle fonksiyonu ile dosya işlemi yapacağımız için "System. IO" namespace'imizi eklemeyi unutmuyoruz. Grünüm temel olarak şu şekilde isterseniz 2. resimdeki gibi groupBox, icon ve renkleri düzenleyerek daha grsel hale getirebilirsiniz. Butonların click olaylarına yazdık fakat bunu kendi tercihinze gre değiştirebilirsiniz. using System. IO; using System. Net; using System. Net. Mail; private void btnTemizle_Click private void btnYukle_Click { try { dlgDosyaYukle. ShowDialog ; if { lbMail. Items. Clear ; StreamReader srRead = new StreamReader ; while srRead. Close ; } } catch } private void btnGonder_Click { try { MailMessage mesaj = new MailMessage ; mesaj. From = new MailAddress(txtMail. Text, txtGAd. Text, System. Text. Encoding. UTF8); SmtpClient smtp = new SmtpClient ; mesaj. Subject =txtKonu. Text; mesaj. IsBodyHtml = false; mesaj. BodyEncoding = System. Text. Encoding. UTF8; mesaj. Body = txtMesaj. Text; mesaj. Priority = MailPriority. High; smtp. Credentials = new System. Net. NetworkCredential ; smtp. Port = Convert. ToInt32 ; smtp. Host = txtSunucu. Text; smtp. EnableSsl = true; for (int i = 0; i < lbMail. Items. Count; i++) // Gnderilecek Maillerin Yüklenmesi. smtp. Send ; MessageBox. Show ; } catch } Programımızı derledik ve "gmail" ayarlarına gre test ettik sonuç resimdeki gibi Mail listesindeki giden maillerime bakıyorum, mail gelmiş.. Gmailde Spam'a düşmeyen ve diğer mailler grünmeyen kullanışlı bir program yazdık :) Kısaca zetlersek bu dersimizde genel olarak mail'in çalışma prensip ve protokollerini, C# da "System. Net. Mail" in bazı sınıfları ve grevlerini incelemiş ve kendi toplu mail yazılımımızı yazmış olduk. Sizler bu zellikleri geliştirebilir yada diğer yazılımlarınıza entegre ederek raporlama ve log'lama içinde kullanabilirsiniz. Kaynak dosya yı buradan indirebilirsiniz. Tüm tahribat ailesine yararlı olması dileğiyle.. Bu Dküman Tahribat. Com Adına TxT Tarafından Yazılmıştır..

çok güzel olmuş saolasın. Keşke dkümanlar blümüne yazsaydın daha kalıcı olabilirdi ;) Bilge insanlar konuşurlar çünkü syleyecek bir şeyleri vardır. Aptal insanlar konuşurlar çünkü bir şey sylemek zorundadırlar. Demokrasi, bir eğitim işidir. Eğitimsiz kitlelerle demokrasiye geçilirse oligarşi olur. Devam edilirse demagoglar türer. Demagoglardan da diktatrler çıkar. --Platon, Devlet