Bir e-posta sunucusundaki mailleri alabilmek için kullanilan protokoldür.
POP3 ya da IMAP bu protokollerin basindadir.
POP3 (Post Office Protocol 3)
SMTP olarak adlandirdigimiz protokollerle gönderdigimiz mailler eger
kisiye ulasmamissa, otomatik olarak farkli yollar denenir. Farkli yollarla yine
ulasmiyorsa bize bir hata mesaji gönderir. Fakat POP3 servisini bir posta
kutusu gibi düsünebiliriz. Bir e-posta geldiginde sunucu içerisinde gelen posta
kutusuna kaydedilir, kullanici istediginde POP3 servisi ile istedigi yazilimi
kullanarak bu postalari alabilmektedir.
IMAP (Internet Mail Access
Protocol)
POP3 gibi, sunucuda kayitli olan e-postalara ulasabilmek için kullanilan
bir protokoldür. POP3'ten farki, birden çok bilgisayardan bir mesaja
ulasilabilmesidir. POP'da bir e-postaya tek bir bilgisayardan erisim
saglanabilmektedir.
Mail Gönderme Protokolü
SMTP (Simple Mail Tranfer Protocol)
E-Posta göndermek için sunucu ve istemci arasindaki iliskiyi kuran
protokoldür. E-Posta gönderme islemini bir örnekle inceleyelim:
Benim mail adresim: veysel@ugurkizmaz.com . Mail gönderme protokolü olarak
POP3'ü kullaniyorum. Yani benim web sitemin bulundugu sunucumda POP3
protokolüyle mail gönderen bir mail sunucusu da yer almaktadir.
vkizmaz@zirvedekibeyinler.net mail adresine mail gönderdigim zaman mail
öncelikle POP3 protokolü ile mail sunucuma gelir, oraya kaydedilir, sunucu
maili gönderilecek kisiye iletir.
-------------------------------------------------------
C#'ta e-posta gönderme islemini inceleyelim:
Mail islemlerini yapabilmek için öncelikle using bölümüne asagidaki
namespace'i ekleyelim:
using System.Net.Mail;
Mail gönderebilmek için bu namespace içerisinde bulunan MailMessage ve
SMTPClient siniflarindan faydalanacagiz.
Mail mesajimi olusturabilmek için MailMessage sinifi türünden bir degisken
olusturmamiz gerekmektedir.
MailMessage ePosta = new MailMessage();
ePosta degiskenimiz, göndecegimiz e-posta'mizin bütün elemanlarini
bulundurmaktadir.
--------------------------
From : E-Posta'nin kimden gönderilecegi bilgisini tutar. MailAddress türünden bir
degisken istemektedir.
ePosta.From = new MailAddress("gonderen@hitlan.com");
--------------------------
To : E-Postanin kime/kimlere gönderilecegi bilgisini tutar.
ePosta.To.Add("alan1@ hitlan.com ");
ePosta.To.Add("alan2@ hitlan.com ");
ePosta.To.Add("alan3@ hitlan.com ");
--------------------------
Attachments : E-Postaya eklenecek eklentilerin bilgisini tutar.
ePosta.Attachments.Add(new Attachment(@"C:\deneme.txt"));
--------------------------
Subject : E-Posta'nin konusu bilgisini tutar.
ePosta.Subject = "Konu";
--------------------------
Body : E-Posta'nin içerik bilgisini tutar.
ePosta.Body = icerik;
--------------------------
SMTPClient : E-Posta'nin gönderilecegi SMTP sunucu ve gönderen kullanicinin
bilgilerinin yazilip, MailMessage türünde olusturulan mailin gönderildigi
siniftir.
SmtpClient smtp = new SmtpClient();
--------------------------
Credentials : E-Posta'yi gönderen kullanicinin kimlik bilgilerini
tutar.
smtp.Credentials = newSystem.Net.NetworkCredential("gonderen@hitlan.com", "sifre");
--------------------------
Port : SMTP sunucusunun port bilgisini tutar.
smtp.Port = 25;
--------------------------
Host : SMTP sunucusunun isim bilgisini tutar.
smtp.Host = "smtp. hitlan.com";
--------------------------
EnableSsl :Sunucu SSL istiyorsa bu degeri true yapacagiz.
smtp.EnableSsl = true;
--------------------------
SendAsync : E-Posta'yi asenkron olarak gönderir. Yani e-posta gönderilene kadar
çalisan thread kapanmaz, gönderme islemi tamamlandiktan sonra kapatilir.
smtp.SendAsync(ePosta, (object)ePosta);
--------------------------
Send : E-Posta'yi gönderme islemini yapar. Sunucuya göre Send ya da
SendAsync metodlarindan birisi kullanilir.
smtp.Send(ePosta);
--------------------------
Asagidaki uygulama, C# dili kullanilarak GMAIL hesabindan baska bir hesaba
mail gönderme islemini gerçeklestiren fonksiyondur:
public bool Gonder(string konu, string icerik)
{
MailMessage ePosta = new MailMessage();
ePosta.From = new MailAddress("posta@gmail.com");
//
ePosta.To.Add("alan1@gmail.com");
ePosta.To.Add("alan2@gmail.com");
ePosta.To.Add("alan3@hotmail.com");
//
ePosta.Attachments.Add(new Attachment(@"C:\deneme.txt"));
//
ePosta.Subject = konu;
//
ePosta.Body = icerik;
//
SmtpClient smtp = new SmtpClient();
//
smtp.Credentials = new System.Net.NetworkCredential("posta@gmail.com","sifre");
smtp.Port = 587;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
object userState = ePosta;
bool kontrol = true;
try
{
smtp.SendAsync(ePosta, (object)ePosta);
}
catch (SmtpException ex)
{
kontrol = false;
System.Windows.Forms.MessageBox.Show(ex.Message, "Mail Gönderme Hatasi");
}
return kontrol;
}