C# Smtp ile Email Yollamak

Smtp nedir?

Simple Mail Transfer Protocol kelimelerini baş harflerinden oluşan Smtp, "Basit mail transfer(Gönderme) protokolü" dür. Giden posta sunucusu olarakta bilinen Smpt mail göndermek için kullanılır. Pop3 ve Imap protokolleriyse gelen posta sunucusu olarak kullanılmaktadır. Smtp posta sunucusu 3. parti yazılımlarla mail gönderirken işimize yarar.

3. Parti mail programlarında yapılması gereken ayarlar nelerdir?

3. Parti mail programın kurulması gereklidir. Giden ve gelen posta sunucu ayarları gerçekleştirilerek, smtp portu girilmelidir.

Smtp portu nedir?

Smtp portu mail gönderirken mail gönderimini üzerinden gerçekleştirdiğimiz bir porttur. Varsayılan olarak 25 numaralı port'tur. Fakat spam mail gönderme olaylarının çoğalmasından ötürü 25 numaralı port kapatılarak smtp port numarası 587 nolu port olarak değiştirilmiştir. 3 parti mail programınızdada bu portu 587 nolu port olarak ayarlamalısınız.

Smtp port numarasını ayarlamazsam ne olur?

Smtp port numarasını ayarlamazsanız mail gönderme işlemlerinizi gerçekleştiremezsiniz.

3. Parti bir mail programıyla mail gönderme işlemi nasıl gerçekleşir?

3. Parti bir mail programıyla mail göndermeye çalıştığınızda öncelikle girdiğiniz hesap ve port bilgileri üzerinden bağlantı kurulmaya çalışılır. O yüzden hesap bilgilerinizi ve smtp portu gibi bilgileri doğru girmelisiniz. Herşeyi düzgü ayarladıysak bir mail yazdığımızda ve bunu gönder dediğimizde karşı smtp sunucumuz ile 587. port üzerinden bir bağlantı gerçekleşir. Bu port üzerinden kimlik denetlemeleriniz yapılır. Eğer denetleme başarıyla gerçekleşirse göndermek istediğiniz mailiniz gönderilir.

Smtp 25 nolu portun Smtp 587 nolu porttan farkı nedir?

İki stmp portuda aynı işlemi gerçekleştirsede arasındaki temel fark şudur. 25 nolu portta kimlik denetimi zorunlu değilken, 587 nolu portta kimlik denetimi zorunludur böylece spam e-postalarında önüne geçilmeye çalışılmıştır.

Peki .NET Smtp kullanarak nasıl mail yollarım?

Hadi şimdi gelin beraber buna bakalım. Öncelikle yapmamız gereken System.Net.Mail referansını Smtp'yi kullanmamız için eklememiz  gerekir. Ayrıca System.Text referansını da UTF8 (Encoding.UTF8) yani encoding ayarını yapmamız için eklemeliyiz. Daha sonra ise Port,  Host, EnableSsl (yani güvenli erişim), Timeout, DeliveryMethod ve Credentials ayarlarını yapmamız gerekmektedir. Bu ayarları  yaptıktan  sonra ise geriye sadece MailMessage nesnesini oluşturup mail yollama işlemini tamamlayabiliriz. Kodlara bakacak olursak şöyle bir kod bloğu düşünebiliriz.

 

SmtpClient client = new SmtpClient();
client.Port = 587; // Genelde 587 ve 25 portları kullanılmaktadır.
client.Host = "mail.tulparyazilim.com"; // Hostunuzun smtp için mail domaini.
client.EnableSsl = false; // Güvenlik ayarları, host'a ve gönderilen server'a göre değişebilir.
client.Timeout = 10000; // Milisaniye cinsten timeout
client.DeliveryMethod = SmtpDeliveryMethod.Network; // Mailin yollanma methodu
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("mailhesabiniz@mail.com", "sifre"); // Burada hangi hesabı kullanarak mail yollayacaksanız onun ayarlarını yapmanız gerekiyor
MailMessage mm = new MailMessage("info@tulparyazilim.com", "info@tulparyazilim.com", "konu", "html içerik"); // Hangi mail adresinden nereye, konu ve içerik mail ayarlarını yapabilirsiniz
mm.IsBodyHtml = true; // True: Html olarak Gönderme, False: Text olarak Gönderme
mm.BodyEncoding = UTF8Encoding.UTF8; // UTF8 encoding ayarı
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; // Hata olduğunda uyarı ver 
client.Send(mm); // Mail yolla

 

Evet, genel olarak C# ve .NET te mail yollama olayı bu şekildedir. Örnekte gösterilen sadece tek bir kullanıcıya mail yollama olayıdır. Eğer çoklu mail yollamak isterseniz. Şöyle bir kod ekleyebilirsiniz ya da kod bloğunda değişiklik yapabilirsiniz.

 

MailMessage msg = new MailMessage();
msg.Body = "Örnek Text";
msg.To.Add("ornek@ornek.com");
msg.To.Add("ornek2@ornek2.com");

 

Ayrıca e-mail sahiplerinin isimlerinin de görünmesini istiyorsanız şöyle bir düzenleme de yapabilirsiniz.

 

MailAddress to = new MailAddress(String.Format("{0} <{1}>", "Görünecek Ünvan", "Email adresi");

 

Aynı formatı kendi email adresiniz için de yapabilir ve böylelikle mail gönderirken kendi ünvanınızın da görünmesini sağlayabilirsiniz.

C# ile basit anlamda SMTP üzerinden mail göndermek bu şekildedir.  Herkese iyi çalışmalar dileriz.

Görüşme yapmak ister misiniz?

İşletmenizin en kritik sorunları ve fırsatları konusunda yardımcı oluyoruz. Birlikte kalıcı değişim ve sonuçlar almaya ne dersiniz?