MailKit Paketiyle Projeye Mail Servis Ekleme

Server Tombak
3 min readAug 13, 2023

--

Image

MailKit ASP.Net projelerimizde projemize mail service gömmek için kullandığımız açık kaynaklı bir pakettir.

Birçok platformda gördüğümüz ve nasıl çalıştığına veya konfigürasyonuna yabancı olduğumuz ve bu yüzden biraz korkutucu gelebilen kullanıcıya mail gönderme operasyonunu bu yazımızda MailKit paketini kullanarak ele alıp basit bir örnek ile tamamlayacağız. Hadi Başlayalım…

Mail gönderme işlemleri için SMTP(Simple Mail Transfer Protocol) kullanılır. SMTP ile yapacağımız işlemler: Connect(Bağlan), Authenticate(Doğrulama), Send(Gönderme) ve Disconnect(Bağlantıyı Kes) methodlarından oluşmaktadır. Burada connect ile Maili göndereceğimiz host adresine bağlantı yapacağız(Google Mail’in smtp.gmail.com adresini host olarak kullanacağız), Authenticate ile mailin gönderileceği doğrulama bilgilerini verip mail adresine bağlantıyı sağlayacağız, Send ile oluşturacağımı Mail’in gönderilmesini ve son olarak Disconnect operasyonu ile oluşturduğumuz bağlantıyı sonlandıracağız.

MailKit Paketini Projemize Ekleme:

Projemize önce Mail göndermek için kullanacağımız MailKit paketini ekleyerek başlayacağız. ASP.Net projemizde proje üzerinde sağ tıklayarak Manage Nuget packages seçenegini seçiyoruz. Açılan pencerede MailKit paketini aratıp install diyerek projemize MailKit paketini ekleme işlemini tamamlıyoruz.

Artık kodlamaya geçelim :)

Yapacağımız işlem mail gönderme olduğu için IMailService interface’i ve bu interface’i implemente edecek MailService classını oluşturuyoruz. Buraya demo’muz için yeterli olacağını düşündüğüm SendEmailWithDotNet metodunu ekliyor olacağız. Şimdilik ben tek bir method ekleyeceğim siz daha farklı senaryolarla da deneyerek pekiştirebilirsiniz

IMailService interface’i ve MailService Classını oluşturup implemente ettik. MailService classımızı ve metodumuzu şimdilik doldurmuyoruz. MailService classını doldurmadan önce yapmamız gereken işlemler var.

Appsettings.Json Dosyasıı
MailSettings Classımız

Bize gerekli olacak verileri tutmamız için appsettings.json’a MailSettings section’ı yazıp, bunu eşleştirip kullanmamızı sağlayacak MailSettings classını oluşturduk.

appsettings.json dosyasyında:

UserName ve From maili göndereceğiniz hesabın mail adresi ve portu aynı şekilde 587 olarak tutun.

DisplayName mailin karşı tarafa gönderildiğinde yazıcak gönderen ismidir. Eğer bir şirket değilseniz burası genelde ismimizi yazıldığı yerdir tabi ne yazılacağı size kalmış bir durum.(Konu hakkında bir başlıkta olabilir vb.)

MailService Konfigürasyonu aşağıdaki gibidir:

Burada yaptığımız işler kod incelendiğinde anlaşılacağı gibi bir mail mesajı oluşturup sırasıyla SMTP connect, Authenticate, Send, Disconnect metodlarını gerekli parametreleri vererek kullanmak.

MailService Classımız

Daha sonra yapacağımız işlem Controllerımızı oluşturmak ve methodumuzu çağırıp çalıştırmak olacak.

MailController

Ve son işlem IMailService’i Dependency Injection ile enjekte ettiğimizde(Constructor kastediliyor) MailService nesnesinin oluşturulması için program.cs dosyasında AddScoped metodunu kullanmak.

builder.Services.AddSscoped<IMailService, MailServcie>(); bu method IMailService interface’i çağrıldığında onun için bir MailService nesnesi göndermemiz anlamına geliyor.

Ve MailSettings classı için kullanılacak olan appsetting.json da bulunan MailSettings bilgilerinin Eşleştirilmesi için gerekli operasyon.

program.cs Dosyası

Bu sayede MailService classıyla daha önce belirttiğimiz kullanılacak mail hostu, email adresimiz ve şifre gibi gerekli belgelere erişimimiz bulunacaktır.

Test Aşaması:

projenizi çalıştırıp swagger üzerinden testinizi yapabilirsiniz. Subject konumuz, body mail mesajınız ve mailAddress alanını da göndereceğiniz mail adresiyle doldurur ve Execute derseniz göndermek istediğiniz Mail başarıyla gönderilecektir.

Evet Makalemizde anlatacaklarım bu kadardı, makalede kodu verilen projeye bu Link’ten ulaşabilirsiniz.

Keyifli Okumalar, sağlıcakla kalın, takipte kalın :)

--

--

Server Tombak
Server Tombak

Written by Server Tombak

Software Engineer with a relentless passion for learning and sharing knowledge. Join me on my journey to explore the ever-evolving world of technology.

No responses yet