ASP.NET ile E-Mail Gönderme
Klasik ASP 'nin ayrıntı denebilecek bazı işleri yapabilmesi için
bileşenlere ihtiyaç duyulmasından hep şikayet edilir. Hatta birçok kişi ASP 'nin
en kötü yanının bu olduğunu düşünür. ASP ile e-mail göndermek için server'da
gerekli bileşenlerden en az birisinin yüklü bulunması gerekir.
ASP
kaynak sitelerinin ve böylece ASP kullanımının artmasıyla birlikte bedava ASP
destekli bulundurma hizmeti veren siteler açılmaya başladı. Ancak bunlar bedava
oldukları için bazı özelliklerden yoksunlar. Bazılarına FTP ile bağlanamazken,
bazılarında bulunan sitelere ulaşmak mümkün olmuyor. Çoğunda ise herhangi bir
mail bileşeni yok. Yani bedava ASP bulundurma sitesinden hesabı bulunan kişiler
e-mail gönderemiyorlar.
ASP.NET 'te durum böyle değil. E-mail göndermek
için ayrı bir bileşene ihtiyaç yok. ASP.NET ile site yapan herkes iletişim
sayfasında e-mail adresini vermekle yetinmeyip mail formunu da hazırlayabilir.
Peki nasıl ?
Şimdiye kadar ki örneklerde herhangi bir namespace
(isimuzayı) 'e ihtiyaç duymadık. Code-behind özelliğini kullanmadığımız için web
kontrolü kullanacağımızda System.Web.UI.WebControls namespace 'ini sayfamıza
dahil etmemiz gerekmedi. Ancak bu sefer buna gerek duyuyoruz. Mail göndermek
için gerekli namespace 'i "Import" direktifini kullanarak sayfamıza dahil
edeceğiz. Bu namespace System.Web.Mail, CDOSYS (Collaboration Data
Objects for Windows 2000) bileşenini kullanarak mail göndermemize olanak
verir.
|
<%@ Page language="VB" debug="true"
%> <%@ Import Namespace="System.Web.Mail" %> |
System.Web.Mail namespace 'i içerisindeki MailMessage ve SmtpMail sınıflarını kullanacağız. MailMessage sınıfının özelliklerini kullanarak gönderilecek adres, konu ve mesaj gibi içeriği oluşturan elemanları belirleyeceğiz. SmtpMail sınıfıyla ise maili göndereceğiz.

Önce ziyaretçinin bilgi girişi yapacağı formu hazırlıyoruz. Bu form gönderen kişinin e-mail adresinin, e-mailin konusunun ve mesajın yazılacağı birkaç TextBox kontrolünden ve tabii ki bir Button kontrolünden oluşacak. Script etiketleri içerisinde MailGonder isimli bir sub oluşturuyor ve Button kontrolünün OnClick özelliğine bu sub 'ın ismini yazıyoruz. Şimdi MailGonder 'in içerisinde bulunması gereken kodlara sıra geldi.
|
<script runat="server"> Sub MailGonder(Sender As Object, E As EventArgs) Dim YeniMail As New MailMessage() YeniMail.From = txtKimden.text YeniMail.To = "info@site.com" YeniMail.Subject = txtKonu.text YeniMail.Body = txtMesaj.text SmtpMail.SmtpServer = "mail.site.com" SmtpMail.Send(YeniMail) Response.Write("Mail gönderildi") Response.End End Sub </script> |
MailGonder sub 'ında ilk olarak türü MailMessage olan yeni bir nesne oluşturuyoruz. Ardından bu nesnenin From (Kimden), Subject (Konu) ve Body (Mesaj) özelliklerine hazırladığımız bilgi giriş formundaki kontrollerin değerlerini atıyoruz. To (Kime) özelliğine değeri direk atıyoruz. Çünkü e-mail formuyla sadece bu adrese e-mail gönderilebilmesini istediğimizi farzediyorum
Daha sonra SmtpMail.SmtpServer özelliğini kullanarak e-maili gönderirken kullanılacak olan mail server 'ın adresini belirliyoruz. Son aşama ise e-mailin gönderilmesi.. SmtpMail sınıfının Send yöntemine, e-mail mesajının içeriğini oluşturmak için kullandığımız YeniMail 'i parametre olarak yolluyoruz. Ve e-mail gönderiliyor. Hepsi bu kadar..
| Sayfanın tüm kodu | |
|
<%@ Page language="VB" debug="true"
%> <%@ Import Namespace="System.Web.Mail" %> <script runat="server"> Sub MailGonder(Sender As Object, E As EventArgs) Dim YeniMail As New MailMessage() YeniMail.From = txtKimden.text YeniMail.To = "info@site.com" YeniMail.Subject = txtKonu.text YeniMail.Body = txtMesaj.text SmtpMail.SmtpServer = "mail.site.com" SmtpMail.Send(YeniMail) Response.Write("Mail gönderildi") Response.End End Sub </script> <form runat="server" style="font: 11px verdana;"> Kimden :<br> <asp:TextBox id="txtKimden" runat="server" width="230"/><br> Konu :<br> <asp:TextBox id="txtKonu" runat="server" width="230"/><br> Mesaj :<br> <asp:TextBox id="txtMesaj" runat="server" TextMode="MultiLine" Rows="13" Cols="40"/><br> <asp:Button id="btnGonder" runat="server" text="Gönder" OnClick="MailGonder"/> </form> | |
Gördüğünüz gibi ASP.NET ile e-mail göndermek çok kolay ve ayrıca birşeye ihtiyaç duyulmadan yapılabiliyor. Gerekli olan tek şey ASP.NET desteği veren bir bulundurma hesabınızın bulunması diyebiliriz. Peki HTML veya Text e-mail gönderme seçenekleri yok mu ? Tabii ki var ancak bunlar daha ileriki yazıların konusu olacak. Bu makalede en basit haliyle e-mail gönderdik. Ayrıntıları ileride.. Görüşmek üzere..
