Arkadaşlar öncelikle mail gönderebilmek için projemizin başına usinng System.Net.Mail; referansını ekliyoruz. Smtp (kimlik doğrulama) kullanarak mail göndereceğimiz için, öncelikle smtp nesnemizi oluşturacağız. Aslında smtp kullanmadan da 25 numaralı port üzerinden kimlik doğrulama kullanmadan da mail gönderebiliriz. Ancak bu durumda gönderdiğimiz mailin spam kutusunu düşme ihtimali çok yüksek.
Şimdi dilerseniz öncelikle smtp nesnemizi oluşturalım.
1 |
SmtpClient smtp = new SmtpClient(); |
Şimdi oluşturduğumuz “smtp” adlı nesnemizin özelliklerine bakalım;
smtp.Host : Mail sunucumuzun smtp adresini tutar. String türü değer alır.
smtp.Port : Mail sunucumuzun port numarasını tutar. Intiger türü değer alır.
smtp.EnableSsl : SSL şifreleme kullanılıp kullanılmayacağı ayarlanır. Boolean türü değer alır.
smtp.Credentials : Kullanıcı adı ve şifre bilgilerini tutar.
smtp.Send() : Hazırladığımız maili göndermeye yarar Şimdi bu bilgilerden istifade ederek smtp nesnemizi yapılandıralım.
Kodlar içerisinde anlatımlar mevcuttur;
1 2 3 4 5 6 7 8 9 10 11 |
SmtpClient smtp = new SmtpClient(); // smtp nesnesi oluşturuyoruz /* * Nesnemizi oluşturduğumuza göre şimdi mail sunucumuzun adresini girelim * Gmail ile kimlik doğrulama sorunu yaşadığım için ben Outlook mail kullandım * Mail adresinizin smtp ayarlarını sunucunuzdan öğrenebilirsiniz */ smtp.Host = "smtp-mail.outlook.com"; // Mail sunucusu adresi smtp.Port = 587; // Outlook için 587 smtp.EnableSsl = true; // Sunucu SSL kullanıyorsa True olacak // mail adresimizin kullanıcı adı ve parolasını yazıyoruz smtp.Credentials = new System.Net.NetworkCredential("isim@outlook.com","parola"); |
Şimdi smtp sunucumuzu yapılandırdığımıza göre, bir eposta nesnesi hazırlayıp, inceleyelim.
Eposta nesnemizi oluşturuyoruz;
1 |
MailMessage eposta = new MailMessage(); |
Şimdi gelelim nesnemizin özelliklerini incelemeye:
eposta.From : Gönderdğimiz mailde görünecek olan mail adresi ve ismi tutar.
eposta.To : Alıcı adreslerini tutar, Add() fonksiyonu ile kullanılır, strin türü değer alır. Eğer birden fazla mail adresi eklenecek ise, adresler arasında virgül kullanılır.
eposta.CC : Bilgi olarak eklenecek mail adreslerini tutar. Add() fonksiyonu ile kullanılır, strin türü değer alır. Eğer birden fazla mail adresi eklenecek ise, adresler arasında virgül kullanılır.
eposta.Bcc : Gizli olarak eklenecek mail adreslerini tutar. Add() fonksiyonu ile kullanılır, strin türü değer alır. Eğer birden fazla mail adresi eklenecek ise, adresler arasında virgül kullanılır.
eposta.Subject : Göderilecek e-posta konusunu tutar. String türü değer alır.
eposta.Body : Göderilecek e-posta gövdesini (içeriğini) tutar. String türü değer alır.
eposta.Attachments : Gönderilecek epostaya eklenen ek dosyalarını tutar.
Şimdi gelelim kodlama yapısına. Kodlar üzerinde anlatımlar mevcuttur;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// eposta adında bir mail nesnesi oluştur MailMessage eposta = new MailMessage(); // Giden mailde görünecek e-posta adresi ve isim email adresi smtp ile aynı olmayınca hata veriyor. eposta.From = new MailAddress("isim@outlook.com","KodDefteri.Net"); // Mail gönderilecek kişi(ler). Eğer birden fazla kişiye gidecekse, kişiler arasına virgül koyulacak eposta.To.Add("isim1@mail1.com, isim2@mail2.com"); eposta.CC.Add("ism3@mail3.com, isim4@mail4.com"); // Bilgi maili gönerilecek kişileri CC özelliğine ekle eposta.Bcc.Add("isim5@mail5.com"); // Gizli alıcıları bcc özelliğine ekle eposta.Subject = "C Sharp Dersleri"; // Mail konusunu subject özelliğine ekle eposta.Body = "Bu bir email mesajıdır. Buraya mail içeriği gelecek"; // mesaj içeriğini body özelliğine ekle // ekleri dosya yolu ile birlikte bir string dizisinde tutuyoruz string[] ekler = {"c:\ek1.png","c:\ek2.pdf","c:\ek3.docx"} // Ardından ekleri foreach döngüsü ile Attachments özelliğine ekliyoruz foreach(string ekle in ekler){ eposta.Attachments.Add(new Attachment(@ekle)); // ekleri Attachments özelliğine ekle } } try{ // Hata kontrolü smtp.Send(eposta); // eposta nesnesini smtp.Send fonksiyonu ile gönder }catch(Exception ex){ // Hata oluştuysa oluşan hatayı ex değişkenine aktar MessageBox.Show("Mail gönderilirkene bir hata ile karşılaşıldı: " + ex.Message); // Hatayı kullanıcıya bildir } |
C# ile örnek mail gönderme örnek uygulamasına buradan erişebilirsiniz: C# Mail Gönderme Uygulaması