Bugün tüm internet kullanıcılarının World Wide Web çapında diğer internet kullanıcılarıyla iletişim kurmak için elektronik posta adreslerine sahip olması, gelişimini tüm hızıyla sürdüren teknolojinin en büyük nimetlerindendir. Öyleki özellikle reklamcılık sektörü başta olmak üzere bugün bir sitesi olan , her kişi, kurum ve kuruluş, gerek kendi çalışanlarına, üyelerine , gerekse diğer kullanıcılara ücret tarifeleri, sattıkları ürünlerin teknik özellikleri, sundukları hizmetin çeşitliliği gibi tüm bilgilendirmeleri e-posta kanalıyla yapmaktadır.
Devlet kurumlarında çalışan arkadaşlarımızda e-posta sisteminin kurumlar arasındaki bilgi akışı üzerinde sağladığı kolaylıklardan istifade etmekteler artık. Bu kadar laf salatasını elbette e-posta sisteminin önemini belirginleştirmek için yaptım. Ama eminim zaten hepiniz bunun farkındasınızdır.
Forumda bir çok dilin bir şekilde e-posta gönderimiyle ilgili konuları işlediği aşikar. Bizde en iyi bildiğimiz dil olan delphice ama ASP.NET ile bir e-posta modülünün çalışma mantığından bahsedeceğiz. Yazacağımız e-posta gönderme modülü için yerel makinada
smtp, pop3, imap gibi protokol servislerinden yararlanacağız. Bu yazıda
smtp prokolünü kullanarak nasıl e-posta gönderebileceğimizi öğrenmiş olacağız.
Bir E-Posta Sunucusunun KurulmasıPiyasadan ücretsiz temin edebileceğiniz smtp protokol destekli bir e-posta sunucusuna ihtiyacımız olacak. Bu tür sunucu yazılımları hosting hizmeti veren firmalarca sağlanmaktadır. Aradığınızda o kadar çok sunucu yazılımıyla karşılaşıyorsunuz ki, en doğru seçimin hangisi olduğuna karar vermekte zorlanabiliyorsunuz. Ben kısa bir araştırmadan ve sponsorlarımın işaretleri doğrultusunda
merakmail server e-posta sunucusunu yerel makinama kurmaya karar verdim. Kurulum ve ayar işi oldukça kolay. Bahse konu sunucunun deneme sürümünü
[Linkleri görebilmek için üye olun veya giriş yapın.] indirebilirsiniz...
Sunucunun kurulumu tamamlandığında size ne yapmanız gerektiğini anlatan bir sihirbazla temel yapılandırma ayarlarını kolayca yapabiliyorsunuz...
Bir E-Posta suncusu üzerinde birden fazla etki alanı (DOMAIN) tanımlayabilir, bu etki alanlarına e-posta servisinden yararlanacak üyeleri ekleyip çıkarabilir, yada sunduğunuz hizmetin sınırlarını ayarlayabilirsiniz.
E-Posta Sunucusu Yönetim konsolu[Resimleri görebilmek için üye olun veya giriş yapın.]Sunucunun sadece yerel hesaplar arası değilde www üzerinde e-posta göndermesini istiyorsanız aşağıdaki ayarlarıda yapmalısınız....
[Resimleri görebilmek için üye olun veya giriş yapın.] Bu ayarlardan sonra e-posta sunucumuz hem içeriye hem dışarıya e-posta gönderebilmektedir. Konumuz e-posta sunucusunun yapılandırılması olmadığından atladığımız ayrıntıları arkadaşlarımızın yorumlarıyla öğrenebiliriz.
E-Posta Gönderme YöntemiGönderme işlemiyle ilgili ihtiyaç duyduğumuz tüm yöntem ve özelliker .NET Frame içinde
System.Web.Mail uzay adında tanımlandığından bu uzay adını unit başına uses bildirimiyle ekleyerek işe başlıyoruz.
interface
uses System.Web.Mail;
Bir çok asp.net sayfasından yada ileride veri tabanı üzerinden sırayla ilgili üyelere e-posta gönderimi yapabilmek için e-posta gönderim yöntemini ayrı bir unitte tasarlamakta fayda var.
Function EPostaGonder(Kimden,Kime,_SmtpHost,Konu,Mesaj : String;Format : MailFormat ;DosyaListesi tring='')mallInt;
Var
GonderimSonucu : SmallInt;
Mail : MailMessage;
Attach : MailAttachment;
Smtp : SmtpMail;
begin
try
GonderimSonucu := 1; // Gönderildi
Mail := MailMessage.Create;
try
Smtp.SmtpServer := _SmtpHost;
With Mail do
begin
From := Kimden;
&To := Kime;
Subject := Konu;
BodyEncoding.UTF8;
Body := Mesaj;
BodyFormat := Format;
if DosyaListesi <> '' then
begin
Attach := MailAttachment.Create(DosyaListesi);
Mail.Attachments.Add(Attach);
end;
end;
Smtp.Send(Mail);
Except on E:Exception do GonderimSonucu := 0;
end;
finally
Mail.Free;
Mail := Nil;
Result := GonderimSonucu;
end;
end;
GonderimSonucu : SmallInt; // Gönderimin başarılı olup olmadığını dönderecek değişken
Mail : MailMessage; [Linkleri görebilmek için üye olun veya giriş yapın.] sınıfında türeyen ve göndereceğimiz e-posta ile ilgili tüm teferruatı tutan nesnemizAttach : MailAttachment; // Gönderime eklenecek dosyalar için nesnemizSmtp : SmtpMail; // Gönderim işini yapacak protokol sınıfından nesnesimiz.BodyFormat : Gönderinin HTML mi yoksa Text dosyası biçimindemi gönderileceğiSmtp.SmtpServer := _SmtpHost; satırıyla bu maili gönderecek sunucu adresini belirtiyoruz. Sunucumuz local olduğundan fonksiyona geçilen bu parametrenin değeride localhost olacaktır.From : gönderme işlemini yapan yerel hesaplardan biri. &To : e-postanın gideceği adres.Subject : Gönderinin başlığı/konusuBodyEncoding : Gönderinin diliBody : Gönderilecek mesajAttach : Gönderime Eklenecek dosya listesiiçin kullanılmaktadır. E-Postanın alıcıya teslimi (Gönderilmesi) işlemini ise Smtp nesnesinin gönderilecek mail nesnesini parametre olarak alan
Send yöntemi gerçekleştirmektedir. Gönderim esnasında oluşabilecek istisnai durumlarda gönderimin başarısız olduğunu
Gonderimsonucu değişkeninin değerini ayarlayarak çözüyoruz.
Smtp nesnesine
MailMessage sınıfından türeyen bir nesneyi parametre olarak vermek yerine tüm gönderimi
Smtp'nin ikinci tip send yöntemiylede (overload) tek seferde halledebiliriz. Ama ayrıntıya girmek, kodun okunurluğunu artırmak için ilk yöntemi tavsiye ederim.
[Resimleri görebilmek için üye olun veya giriş yapın.]Örnek Bir E-Posta Gönderelim.Procedure TWebForm_Uyelik_Basvuru.AktivasyonmesajiGonder(Con st id,Ip,Buguntring);VarHtmlMsg : String;BegintryHtmlMsg := 'Sayın <b>'+TextBox_GercekAd.Text+' '+TextBox_GercekSoyad.Text+' :</b><br><p><a href="http://'+Ayarlar.SiteAdresi+'" _fcksavedurl=""http://'+Ayarlar.SiteAdresi+'"" _fcksavedurl=""http://'+Ayarlar.SiteAdresi+'"" _fcksavedurl=""http://'+Ayarlar.SiteAdresi+'"" target=_blank">Sittemiz</a> sitesine yaptığınız üyelik başvurunuzun aktifleştirilmesi için lütfen '+' <a href="http://'+Ayarlar.SiteAdresi+'uyeaktivasyon.aspx?u='+TextB ox_KullaniciAdi.Text+'&a='+id+'"><b>Burayı tıklayın</b></a><br>'+' veya aşağıdaki adresi kopyalayıp web tarayıcınızın adres kısmına yapıştırın...<br></p><p>'+'Kullanıcı Adınız :<b>'+TextBox_KullaniciAdi.Text+'</b><br>'+'Parolanız :<b>'+TextBox_Sifre.Text+'</b><br>'+'Aktivasyon Linki :<b><a href="http://'+Ayarlar.SiteAdresi+'uyeaktivasyon.aspx?u='+TextB ox_KullaniciAdi.Text+'&a='+id+'">'+'http://'+Ayarlar.SiteAdresi+'uyeaktivasyon.aspx?u='+TextB ox_KullaniciAdi.Text+'&a='+id+'</a></b><br></p><br>';Ayarlar.EPostaGonder(Ayarlar.SiteMailAdresi,TextBo x_EPosta.Text,'localhost','Uyelik Aktivasyonu',(HtmlMsg),MailFormat.Html);finally// mesaj logu tutulacakend;End;*** ALINTIDIR***