ASP.NET 2.0 İle E-Posta Göndermek
Web sayfası üzerinden e-posta göndermek web yazılımının en popüler konularından biridir.
Web yazılımına yeni başlayanların aklına gelen ilk sorulardan biri de web sitemden nasıl e-posta gönderebilirimdir.
Gerçekten de bu konu oldukça önemlidir. Çünkü bir web uygulamasının e-posta sistemini kullanmadığı çok az örnek vardır.
Dolaylı veya dolaysız çoğu web uygulaması e-postayı kullanır.
İlk zamanki teknolojilerde daha karmaşık olan bu sorun yeni sürümlerle birlikte artık sorunsuz ve basit olarak uygulamalarımıza eklenebilmektedir.
ASP.NET 2.0 sürümü ile birlikte bu iş oldukça basitleşmiştir.
Web Üzerinden E-posta Sorunu
Sorunun özünde iki temel sunucu yapısı ve mantığı yatmaktır.
Bunlardan biri olan web uygulamamız bir web sunucu da barınır ve onun kuralları çerçevesinde işler. E-posta sunucuları da kendi kuralları çerçevesinde çalışır ve konfigüre edilir.
Bir e-posta sistemini web uygulamamıza dahil etmek demek aslında başka bir server komponentini web uygulamamıza dahil etmek demektir.
Bu da sorunun temel kaynağıdır.
Ama yukarıda da bahsettiğim gibi bu iş artık çok basit.
Şimdi gelelim uygulamamıza. Uygulamamız bittiği zaman aşağıdaki arabirimle bir e-posta gönderme sayfası olacak:
Bu arabirim hepimizin bildiği e-posta programlarının kullandığı arabirim.
Öncelikle bu sistemin altyapısına bakalım.
E-Posta İçin hazırlık
Web uygulamamıza bir e-posta sistemi eklemek için öncelikle alt yapıyı hazırlamalıyız.
Başka bir ifadeyle öncelikle bir SMTP servisi kurmalıyız.
SMTP servise diğer adıyla mail server da diyebiliriz.
Bu sunucu mail yönetimini yapan sunucudur.
Şanslıyız ki bu servis IIS ile birlikte gelmektedir. Ancak tanımlı olarak sistemimize kurulmamış olabilir ve çoğunlukla da böyledir.
Servisi kurmamız için Windows CD imizi takıp program ekle-kaldır dan Windows komponentleri ekle kaldır butonunu tıklayarak bunu ekleyebiliriz:
Bu servis kurulduktan sonra, kendisine IIS administrator panelinden ulaşıp bazı ayarlar yapmalıyız.
Buradan sağ tuş ile özellikleri seçip
“Access” segmesinde Authentication butonuna tıkladığımızda “Anonymous” kutucuğunun işaretli olduğundan emin olmalıyız.
Daha sonra iki sıra aşağıdaki relay butonuna tıkladığımızda sunucu IP’mizin tanımlı olup olmadığına bakmalıyız.
Eğer tanımlı değilse Add… Butonuna basıp 127.0.0.1 ip sini tanımlayabiliriz.
Bu özelliklerden daha pek çoğunu kendimize göre düzenleyebiliriz ancak burada detaylara girmeyeceğim.
Bu değerleri verdikten sonra alt yapı hazır demektir.
E-Posta için kodlarımız
Şimdi sıra geldi e-postamızı web uygulamamızda kullanmayı sağlayacak kodlarımıza.
Öncelikle web.config dosyamıza SMTP değerlerini ilave etmeliyiz.
Bu SMTP server’ın web uygulamamıza tanıtıldığı yerdir:
Burada tanıtımın system.web tagları arasında olmadığına dikkatinizi çekerim.
Bu bildirim de uygulama değerleri arasında mail server’ın değeri ve port numarası bildiriliyor.
İfadeleri dikkatle incelemenizde fayda var.
Şimdi artık kodlarımızı oluşturup üzerinde konuşabiliriz. Arabirimini yukarıda gördüğümüz sayfamızın tag kısımlarını vermeyeceğim burada her metin kutusu şekilsel olarak eklenmiş ve bir id verilmiştir. Buradaki kritik kodlar VB dosyamızdakilerdir:
Buradaki en kritik kodlar:
mMailServer = ConfigurationManager.AppSettings.Get("MyMailServer")
mPort = ConfigurationManager.AppSettings.Get("MyMailServerPort")
Çünkü bu iki satır kod sayesinde web.config de tanıttığımız SMTP server, kodlarımıza dahil ediliyor.
Kodların devamında, maili kime göndereceğimiz, kim tarafından gönderildiği, mesaj, cc yapılıp yapılmadığı, eklenti olup olmadığı kontrol ediliyor ve bu değerler programatik olarak değişkenlere atanarak sonunda bir değişkende toplanıyor:
Dim mesaj As New MailMessage(mKimden, mKime, mKonu, mMsj)
Mesaj değişkeni değişik kontrollerden geçirildikten sonra, son aşamada
Dim SmtpBaglanti As New SmtpClient(mMailServer, mPort)
SmtpBaglanti.UseDefaultCredentials = True
SmtpBaglanti.Send(mesaj)
Yordamı vasıtası ile gönderiliyor.
MessageBox Rutini de posta ile ilgili bir takım mesajları bağlantı taraflı vermek için mesaj uyarı kutuları oluşturur.
E-posta sistemini sadece böyle bir arabirimle kullanmayız. Uygulamamız içinde daha pek çok yerde otomatik e-posta lar atmamız gerekebilir. Örneğin kayıt bilgilerinin alındığına dair veya şifre hatırlatması gibi yerlerde otomatik e-postalar atarız. O zaman gerekli verileri ilgili yerlerden alarak kullanıcının herhangi bir butona tıklamasını beklemeden gönderimi biz yapabiliriz.
Daha açık bir ifadeyle yukarıdaki kodları uyarlayarak daha pek çok farklı yordamda kullanabiliriz.