SQL Server administration and T-SQL development, Web Programming with ASP.NET, HTML5 and Javascript, Windows Phone 8 app development, SAP Smartforms and ABAP Programming, Windows 7, Visual Studio and MS Office software
ASP.NET, VB.NET, Microsoft .NET Framework, Microsoft Visual Studio, Windows Forms, Controls and more Tutorials and Articles for Programmers

ASP.NET ile Mail göndermek


Çoğu web uygulaması için artık kullanıcıları ile email aracılığıyla iletişimde bulunmak kaçınılmazdır. Neyse ki artık Asp.NET ile mail göndermek çok kolay.

System.Web.Mail namespace (uzayadı) 'nın sağladığı sınıf ve objeler ile bir email oluşturabilir, istediğiniz özelliklerini düzenleyebilir, mailinize dosya ekleyebilir ve bir SMTP server üzerinden mailinizi alıcılarına gönderebilirsiniz.

System.Web.Mail namespace (uzayadı) CDOSYS (Collaboration Data Objects for Windows 2000) bileşenini kullanarak email gönderilmesini sağlar. Mail gönderebilmek için herhangi bir SMTP sunucunun varlığı ön koşuldur.





Mail.aspx adında bir web formu tasarlayalım. Ve txtKimden, txtKime, txtKonu, txtMetin isimleri ile TextBox web kontrollerini sayfamıza ekleyelim. Bir de gönder butonu oluşturalım ve gönder butonunun tıklanması ile çalışacak kodu aşağıdaki gibi yazalım. System.Web.Mail uzayadını tasarladığımız sayfanın code-behind bölümünde import etmeyi unutmayalım. Yani Mail.aspx.vb sayfasında sayfanın en üstüne aşağıdaki satırı ekleyelim.

Imports System.Web.Mail

Private Sub btnGonder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGonder.Click

    ' Metot 1

    Dim myMail As SmtpMail
    myMail.SmtpServer = AppSettings.Item("SMTPServer")
    myMail.Send(txtKimden.Text, txtKime.Text, txtKonu.Text,txtMetin.Text)

End Sub
Code

Gönder butonunun tıklanması ile ilk önce System.Web.Mail uzayadında yeralan SmtpMail sınıfıının bir örneği oluşturuldu. Ardından yeni oluşturulan SmtpMail objesinin SMTP sunucusunun adı veya IP adresi sağlandı.SMTP sunucusunun adını bir sistem parametresi olarak düşünerek bu parametrenin değerini Web.Config dosyasında tutmayı uygun gördüğümüz için Web.Config içinde appSettings bölümüne ekledik.

<appSettings>
        <add key="SMTPServer" value="smtp.kodyaz.com" />
</appSettings>
Code

Eklediğimiz bu parametrenin değerine de aşağıdaki kod yardımı ile ulaştık.

AppSettings.Item("SMTPServer")
Code

Ancak bu sınıfı kullanabilmek için code-behind sayfamızın başına System.Web.Mail uzayadını eklediğimiz gibi System.Configuration.ConfigurationSettings uzayadını da eklemeliyiz.

Imports System.Configuration.ConfigurationSettings
Code

Mailin gönderilmesini sağlayan metot olan Send metoduna bazı parametreler geçmemiz gerekiyor. Bunlar "from" (kimden), "to" (kime), "subject" (konu) ve "messageText" (mesaj metni) parametreleri. Send metodu bu dört parametreyi de string olarak alır.

myMail.Send(txtKimden.Text, txtKime.Text, txtKonu.Text, txtMetin.Text)
Code

Uygulamanız kullanıcılarına otomatik mailler atacaksa bu maillerin gönderileceği adresler ("from" parametresi) de birer sistem parametresi olarak düşünülerek Web.Config dosyasına eklenebilirler.

System.Web.Mail uzayadı incelendiğinde MailMessage sınıfının varlığı farkedilecektir. MailMessage kullanımı bize yukarıda anlatılan yönteme göre daha geniş bir esneklik sağlayacaktır. Şöyle ki, MailMessage sınıfının Priority (öncelik) özelliği vardır ve bu özellik kullanılarak göndereceğimiz mailin önceliğini belirtebiliriz. Aynı zamanda göndereceğimiz maile bir dosya iliştirebiliriz.Veya mailimizin formatını (Html veya Text) belirleyebiliriz.

Bize sağladığı esnekliklerden dolayı MailMessage sınıfından türetebileceğimiz mail nesnelerini kullanmak daha çok tercih edilecektir.

Gönder butonumuzun kodunu değiştirelim ve aşağıdaki gibi yazalım.

Private Sub btnGonder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGonder.Click

    Dim xMail As New MailMessage
    xMail.From = TextBox1.Text
    xMail.To = TextBox2.Text & ";" & TextBox3.Text
    xMail.Cc = TextBox4.Text
    xMail.Priority = MailPriority.High

    Dim mailAttachment As New MailAttachment("C:\AspNet\Whidbey.jpg")
    xMail.Attachments.Add(mailAttachment)

    xMail.BodyEncoding = System.Text.Encoding.UTF8
    xMail.BodyFormat = MailFormat.Html

    xMail.Body = "<html><body><table border=1><tr><td><font color=red>" & Textbox4.Text & "</font></td></tr></table></body></html>"

    xMail.Subject = "MailMessage Nesnesi Test Maili" & TextBox3.Text
   
   Dim m As SmtpMail
    m.SmtpServer = AppSettings.Item("SMTPServer")
    m.Send(xMail)

End Sub
Code

Gönder butonuna tıklanması ile xMail ismi ile MailMessage sınıfının bir örneğini türetiyoruz. Sonra gönderilecek mail için "From" (kimden), "To" (kime) ve"Cc" (carbon copy) bilgilerini formdaki textbox alanlarından okuyoruz.

Mail için "Priority" (öncelik) belirtiyoruz.

Ardından web sunucusunda C:\AspNet\Whidbey.jpg dosyasını maile iliştiriyoruz. Mail için encoding ve format seçtikten sonra mailin konusunu ve metnini ayarlıyoruz. Mail için Html formatı seçtiğimiz için metin bölümünü html olarak hazırlayabilirsiniz.

Dikkat ederseniz kodumuzun son bölümü ilk metoddaki kod ile hemen hemen aynı. Tek fark SmtpMail nesnesinin Send metodunun başka bir parametre setinin burada kullanılmış olması. İlk örnekte mailin kimden, kime, içeriği ve başlığı parametre setini oluştururken, son örneğimizde tek fakat zengin bir MailMessage nesnesi Send metoduna parametre olarak geçildi.



Visual Studio


Copyright © 2004 - 2021 Eralper YILMAZ. All rights reserved.