Makale Özeti

ASP.NET 2.0 ile birlikte artık System.Web namespace'i yerine System.Net.Mail namespace'i kullanmaya başladık. Bu makalede bu yeni namespace'i kullanarak ve kimlik denetimi ile mail sunucuda oturum açarak nasıl e-posta gönderebileceğimizi göreceğiz.

Makale

KİMLİK DENETİMİ KULLANARAK E-POSTA GÖNDERME(ASP.NET 2.0)

Bilndiği üzere ASP.NET 1.x ile mail göndermek için System.Web.Mail namespace'sini kullanıyorduk. ASP.NET 2.0 ile birlikte artık System.Web namespace'i artık kullanılmıyor. Bunun yerine System.Net.Mail namespace'i kullanılıyor. Durum böyle olunca; mail gönderirken yazacağımız kodlarda da biraz değişiklik oluştu. Bu makalede bu konuyu ve buna ek olarak kimlik denetimi ile mail sunucuda oturum açarak nasıl e-posta gönderebileceğimizi göreceğiz.


Öncelikle aşağıdakine benzer bir form oluşturalım.
Mail gönderme işlemini yapacak olan yordamı yazmaya başlayalım:
Protected Sub mailGonder(ByVal alici As String, ByVal baslik As String, ByVal mesaj As String)
Email adında bir MailMessage nesnesi oluşturuyoruz.
Birinci parametre, göndericinin e-posta adresi olmalıdır.Burada dikkat edilmesi gereken nokta: kullanılan domain hesabının biraz aşağıda tanımlayacağımız SmtpClient nesnesine ait olan Host özelliği ile aynı olması gerektiğidir.
İkinci parametre, alıcının e-posta adresi olacak, bu adres herhangi bir domain'e ait olabilir. (örneğin: sbagdat@gmail.com veya socialmouse@hotmail.com ...) Örneğimizde bu adres kullanıcının formdaki E-Posta Adresi alanına girdiği değer olacaktır.
Dim Email As New System.Net.Mail.MailMessage("kullanici_adiniz@domain", alici)
Kullanıcının başlık alanına girdiği değeri mesajımızın başlığına atamak için aşağıdaki ifadeyi kullanıyoruz.
Email.Subject = baslik
Kullanıcının mesaj alanına girdiği değeri mesajımızın body kısmına atamak için aşağıdaki ifadeyi kullanıyoruz.
Email.Body = mesaj
Kimlik Denetimi bilgileri: Burada biraz açıklama yapmanın gerekli olduğunu düşünüyorum. Kullandığınız SMTP Sunucu kimlik denetimi gerektiriyorsa authentication bilgilerini girmemeniz hailnde mailiniz sadece sizinle aynı domain hesabı altındaki alıcılara gönderilebilir. Örneğin sizin mail adresiniz adres1@domain1 olsun, authentication bilgilerini girmediğiniz taktirde, sizinle aynı domain altında bulunan adres2@domain1 adresine gönderdiğiniz mail alıcısına ulaşacaktır. Ancak sizden farklı bir domain altında bulunan adres3@domain2 gibi bir adrese mailinizi iletemezsiniz. Bunu yapabilmek için mail sunucu üzerinde oturum açmanız gerekir. Aşağıda bu işlemin nasıl yapıldığı görülmektedir.
Dim basicAuthenticationInfo As New System.Net.NetworkCredential("kullaniciAdi", "sifre")
Mail sunucumuzu tanımlayalım
Dim mailClient As New System.Net.Mail.SmtpClient()
' domain yerine mail sunucunuzun adresini yazın(Örneğin abc.com ...)
mailClient.Host = "domain"
Bu satırda mail sunucumuza varsayılan kimlik denetim ayarlarını kullanmamasını ve hemen altında da kullanmasını istediğimiz ayarları bildiriyoruz.
mailClient.UseDefaultCredentials = False
mailClient.Credentials = basicAuthenticationInfo
mailClient.DeliveryMethod = Net.Mail.SmtpDeliveryMethod.Network
Maili gönderelim

Try
    mailClient.Send(Email)
    ' İşlem başarılı ise
    Response.Write("Mesaj gönderildi.")
Catch ex As Exception
    Response.Write("Mesaj gönderilemedi!")
End Try

End Sub


Yazdığımız mailGonder yordamını btn_gonder butonunun Click olayına bağladığımızda işimiz bitmiş olacaktır. Bunun için aşağıdaki kodu yazmak yeterlidir.
Protected Sub btnGonder_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    mailGonder(Trim(txt_posta.Text), Trim(txt_baslik.Text), Trim(txt_mesaj.Text))
End Sub
 
Herkese faydalı olması dileğiyle...

Sorularınız için sbagdat@gmail.com adresini kullanarak benimle iletişim kurabilirsiniz.
Makalede açıklanan kodlar