1 Kasım 2017 Çarşamba

SmtpClient Sınıfı

Giriş
Sınıfı kullanmak için şı satırı dahil ederiz.
using System.Net.Mail;
SmtpClient nesnesi MailMessage sınıfı ile beraber kullanılır.

Constructor - Default
Şöyle yaparız.
SmtpClient smtp = new SmtpClient();
Constructor - Sadece Host
Port vermeden şöyle de yapabiliriz.
var smtp = new SmtpClient("smtp.gmail.com");
Eğer sunucu isminin çözümleyemezse şuna benzer bir exception fırlatır.
...The remote name could not be resolved
Constructor - Host + Port
Bağlantı kurulacak e-posta sunucusunu belirtiriz. 25 artık pek kullanılmıyor.
SmtpClient smtp = new SmtpClient("rmta010.zmail.ril.com",25);
Örneğin GMail 587 numaralı portu kullanır.
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
Credentials Alanı
Gönderenin kendisini tanıttığı alandır.
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("username", "password");
GMail için şöyle yaparız.
new NetworkCredential("wapsatest@gmail.com", "wapsatest123456");
Ya da şöyle.
smtpClient.Credentials = new System.Net.NetworkCredential()
{
    UserName = "xxxxxxxxx@gmail.com",
    Password = "xxxxxx"
};

Şöyle de yapabiliriz.
SmtpClient smtp = new SmtpClient("...");
smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
DeliveryMethod Alanı
Şöyle yaparız.
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
EnableSSL Alanı
Şöyle yaparız.
smtp.EnableSsl = true;
Açıklaması şöyle
The SMTP session will begin on an unencrypted connection, and then 
the client will issue a STARTTLS command to upgrade 
to an encrypted connection using SSL.
Host Alanı
Şöyle yaparız.
smtp.Host="smtp.gmail.com";
Port Alanı
Port numarasını şöyle belirtiriz.
smtp.Port = Convert.ToInt32(587);
Send metodu
Mesaj gönderir.
MailMessage mail = new MailMessage();
...
SmtpClient smtp = new SmtpClient("rmta010.zmail.ril.com",25);
...
smtp.Send(mail);
Metod exception atabilir.
try
{
  smtp.Send(...);
}
catch (Exception ex)
{
  MessageBox.Show("Error message: " + ex.Message);
}
SendAsync metodu
Şöyle yaparız.
smtp.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
string userstate = "sending.......";
smtp.SendAsync(msg, userstate);
SendCompleted ile bağlanan metod tetiklendikten sonra hem MailMessage hem de SmtpClient nesneleri Dispose edilmelidir. MailMessage şöyle Dispose edilir.
message.Dispose();
UseDefaultCredentials Alanı
Kendi credentials değerlerimizi kullanmak için şöyle yaparız.
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("from@mail.com", "password");

Hiç yorum yok:

Yorum Gönder