MailKit Paketiyle Projeye Mail Servis Ekleme
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.
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.
Daha sonra yapacağımız işlem Controllerımızı oluşturmak ve methodumuzu çağırıp çalıştırmak olacak.
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.
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 :)