ana sayfa | makaleler | kodlar | hakkında | cv | referanslar | iletisim
 

asp.net 2.0 ile mail gönderme

      asp.net 1.x ile 2.0 arasındaki değişikliklerden biri mail gönderme sistemi. 1.x tasarlanırken mail gönderme işlemi sadece web işlemi olduğu düşünülüp system.web.mail namespace'i içinde mail gönderme fonksiyonları tanımlanmıştı. ancak sonradan görüldü ki masaüstü ve pocket pc yazılımları da mail gönderme işlemini sık sık kullanıyor. dolayısı ile mail gönderme işlemleri system.web.mail namespace'inden alınıp, system.net.mail namespace'ine konuldu. eğer siz de asp.net 2.0'a 1.x versiyonlarından geçiş yaptıysanız ilk başlarda oldukça aramış olmalısınız mail sınıflarını.

      tabi değişen sadece namespace olmamış. tüm yapı baştan değiştirilmiş ve daha fazla nesneye dayalı hale getirilmiş, mail adresleri bile sınıflara atanmış. yeni de birçok özellik eklenmiş. biz bu yazımızda basit bir mail gönderme örneği yapacağız. bundan sonraki yazılarda da bu işin detayına inip mail göndermedeki yeniliklere bakacağız.

      ben bu yazı için aşağıdaki gibi bir form kullanacağım. kutularda yazan isimler kontrollerin isimleri.

       formumuzun genel tasarımı bu, şimdi bu tasarımı oluşturmak için gereken kodlara bakalım.

<%@ page language="c#" title="mail gönder" %>
<html>
<head></head>
<h1>asp.net 2.0 ile mail gönderme</h1>
<form runat="server">
<table border="0" id="table1">
<tr>
<td>gönderenin ismi</td>
<td><asp:textbox id="gonısim" runat="server" /></td>
</tr>
<tr>
<td>gönderenin maili</td>
<td><asp:textbox id="gonmail" runat="server" /></td>
</tr>
<tr>
<td>alıcının ismi</td>
<td><asp:textbox id="aliciısim" runat="server" /></td>
</tr>
<tr>
<td>alıcının maili</td>
<td><asp:textbox id="alicimail" runat="server" /></td>
</tr>
<tr>
<td>başlık</td>
<td><asp:textbox id="baslik" runat="server" /></td>
</tr>
<tr>
<td>mesaj</td>
<td><asp:textbox id="mesaj" columns="40" rows="7" runat="server" textmode="multiline" /></td>
</tr>
<tr>
<td colspan="2" align="center"><asp:button id="dugme"  text="maili gönder" runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>

        bu dosyayı .aspx uzantısı ile kaydettiğiniz zaman birinci aşama bitmiş demektir. şimdi sayfamıza system.net.mail namespace'ini ekleyelim. aşağıdaki kodu <%@ page %> direktifinin altına ekleyelim.

<%@ ımport namespace = "system.net.mail" %>

        bu kodu ekledikten sonra artık mail sınıflarımıza ulaşabilir hale geliyoruz. maili düğmeye basınca yollanmasını istediğimiz için düğmemiz için bir onclick (tıklanma) olayı oluşturuyoruz. <asp:button> kontrolünün kodunu aşağıdaki gibi değiştiriyoruz.

<asp:button id="dugme" onclick="mailgonder" text="maili gönder" runat="server" />

         yukarıdaki kod ile düğmemize tıkladığımız zaman mailgonder isminde bir olayın çalışmasını istediğimiz bildiriyoruz; ancak sayfamızda böyle bir olay yok. dolayısı ile şimdi onu oluşturalım. aşağıdaki kodları <head></head> etiketleri arasına ekliyoruz.

<script language="c#" runat="server">
private void mailgonder(object sender, system.eventargs e)
{
}
</script>

        şu an için ikinci aşamayı da bitirdik. sayfamız tamam, olayımız tamam. en son maili yollayacak asıl kodlara geldi. aşağıdaki kodları mailgonder olayı içine yazıyoruz.

try{ // mail olayı riskli bir olay, hata ihtimallerine karşı try-catch bloğu
smtpclient istemci = new smtpclient("mail.maxiasp.net"); // mail istemcisini oluşturuyoruz, sunucumuzu bildiriyoruz.

mailaddress gon = new mailaddress(gonmail.text, gonısim.text); // gönderen bilgilerini mailaddress sınıfı ile oluşturuyoruz. mail ve isim i argüman yolluyoruz.
mailaddress alici = new mailaddress(alicimail.text, aliciısim.text); // gönderende olduğu gibi aliciyi da sınıf olarak bildiriyoruz.

mailmessage mail = new mailmessage(gon, alici); // mail mesajını da bir sınıf olarak oluşturuyoruz. bu sefer gönderen ve alici sınıflarını argüman olarak yolluyoruz
mail.subject = baslik.text; // mailin başlığını atıyoruz.
mail.body = mesaj.text; // mailin içeriğini atıyoruz

istemci.send(mail); // maili göndermeyi deneyiyoruz
response.write("mail yollandı"); // başarılı bir şekilde gitti ise, ekrana yazıyoruz
}
catch(exception ex) // herhangi bir hata oluşursa bu durumda onu da yazıyoruz
{
response.write("hata oluştu:<br>");
response.write(ex.message); // hata mesajı
}

       kodların yanlarında yorumlar olmasına rağmen biraz daha açıklama yapayım. bu kodda try-catch bloğu kullandım; çünkü mail gönderme her zaman başarılı olmayabilir. örneğin mail sunucuya ulaşamayabilir, alıcı ve gönderen mail adreslerinde bir sorun olabilir. bu durumlarda hata sayfasına düşmemek için biz hatayı kendimiz kontrol ediyoruz ve hata durumunda "arkadaşça" bir şekilde kullanıcıyı uyarıyoruz.

        eğer herşey başarılı ise sonuç aşağıdaki gibi olmalı.

       şayet bir sorun varsa sonuç aşağıdaki gibi olmalı.


 

maxiasp.net
maxiasp.com
evren ayan
yusuf öztürk
windowsclient.net
thewpfblog.com
msakademik.net
bildirgec
burak selim şenyurt
yazgelistir.com
cocuk.com

ffwinmobile
secim2007
pixelMaxi
db2class
filmhatalari
Tarihci



bu site bahadır arslan tarafından tasarlanmış ve kodlanmıştır