SMTP Authentication ile Mail Gönderimi

0 dakikada yazıldı

18372 defa okundu

Düzenle

Geçenlerde bir programcı dostumun kodlarına bakarken mail gönderim
işlemleri için hala eski System.Web.Mail sınıflarını kullandığını
gördüm. Bunun aslında bir zararı yok fakat yeni hali ile aslında
kullanılması gereken System.Net.Mail sınıfıdır. Tabi bu noktada ufak
bir sorun oluşuyor, sorun bakmadan önce gelin System.Web.Mail sınıfı
ile kullanıcı adı ve şifre kullanarak SMTP Authentication desteği ile
mail gönderen kodumuza bakalım.

        Dim message As New
System.Web.Mail.MailMessage

        message.BodyFormat = Mail.MailFormat.Html

        message.Body = html

        message.To = "hedef@mail.com"

        message.From = "gonderen@mail.com"

        Dim server As System.Web.Mail.SmtpMail

        server.SmtpServer = "mail.sunucum.com"

        message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",
"1")

        message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",
"adresim@mail.com")

        message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword",
"sifrem")

        server.Send(message)

\

Yarattığımız message nesnesine Fields.Add metodu ile SMTP
Authentication kullanacağımızı, kullanıcı adını ve şifresini
aktarıyoruz. System.Web.Mail üzerinden yarattığımız SMTP sunucusunun
adresini de vermeyi tabi ki unutmadık. Yukarıdaki kod herhangi bir sorun
olmadan çalışacaktır, fakat Microsoft tarafından tavsiye edilen daha
yeni bir sınıf yapımız var; System.Net.Mail.

        Dim message As New
System.Net.Mail.MailMessage

        message.IsBodyHtml = True

        message.Body = html

        message.To.Add(New
System.Net.Mail.MailAddress("hedef@mail.com"))

        message.From = New
System.Net.Mail.MailAddress("gonderen@mail.com")

        Dim server As New
System.Net.Mail.SmtpClient

        server.Send(message)

\

Kodumuzda aslında aynı işlemleri biraz daha farklı bir şekilde yaptık.
"Peki nerde SMTP Authentication ayarları?" dediğinizi duyar gibiyim.
Gelin o ayarları da kodumuzun içerisinde koymaktansa daha kolay
değiştirebileceğimiz bir yere, yani Web.Config içerisine
yerleştirelim.

  <system.net>

    <mailSettings>

      <smtp
from="gonderen@mail.com">

        <network
host="mail.sunucum.com"
port="25" userName="kullanici
adi
"

                password="şifre"
defaultCredentials="true" />

      </smtp>

    </mailSettings>

  </system.net>

\

"Yok, ben ısrarla SMTP Authentication olayını kodumun içerisinde çözmek
istiyorum!" diyorsanız aşağıdaki kodu kullanabilirsiniz.

        Dim message As New
System.Net.Mail.MailMessage

        message.IsBodyHtml = True

        message.Body = html

        message.To.Add(New
System.Net.Mail.MailAddress("hedef@mail.com"))

        message.From = New
System.Net.Mail.MailAddress("gonderen@mail.com")

        Dim server As New
System.Net.Mail.SmtpClient("mail.sunucum.com")

        server.Credentials = New
System.Net.NetworkCredential("kullanıcı
adı"
, "şifre")

        server.Send(message)

\

Hepinize kolay gelsin...