Altbilgi içeriğine atla
Iron Academy Logo
C# Öğrenin
C# Öğrenin

Diğer Kategoriler

FluentEmail kullanarak C#'ta E-posta Gönderme

Tim Corey
30m 36s

C#'ta programlı olarak e-posta göndermek, birçok kurumsal yazılım çözümünde yaygın bir gereksinimdir. Ancak Tim Corey, "C#'da FluentEmail kullanarak E-posta Gönderimi" adlı videosunda bu sürecin karmaşık olmak zorunda olmadığını açıklar. İster basit metin mesajları göndermek isteyin, ister HTML e-posta veya toplu e-postalarla başa çıkın, FluentEmail, modern yöntemler ve SMTP protokollerini kullanarak e-posta gönderme işlevini uygulamanın kolay bir yolunu sunar.

Bu makalede Tim Corey'nin videosunu takip ederek C#'ta FluentEmail ile nasıl e-posta gönderileceğini, bir SMTP sunucusunun nasıl kurulacağını, dinamik HTML e-posta mesajlarının nasıl oluşturulacağını ve tüm e-posta gönderme sürecinin nasıl etkili biçimde test edileceğini öğreneceğiz.

FluentEmail'e Giriş

Tim, konuya geçmişi açıklayarak başlıyor: C#'ta e-posta gönderimi uzun süre System.Net.Mail gibi eski araçlarla yapılmış, ancak .NET 5 ve üzeri sürümlerle bunların büyük çoğunluğu kullanımdan kaldırılmış. Bu noktada, hem basit mesajlar hem de HTML e-postalar ve satır içi görüntüler gibi daha karmaşık iletişimler için boşluğu doldurmak amacıyla modern bir e-posta kütüphanesi olan FluentEmail devreye giriyor.

Tim, hedefin kolayca e-posta oluşturmak, şablonlar kullanmak ve hatta onları prodüksiyon sunucularına bağlanmadan test edebilmek olduğunu vurguluyor.

Konsol Uygulamasını Ayarlama

1:04'te Tim, EmailDemoApp adlı yeni bir Konsol Uygulaması oluşturur. Kullanıcı arayüzüne ihtiyaçınız olmadığında statik void Main(string[] args) ile veya sadece public static void Main ile başlanmasının basitliğini vurguluyor. Temiz başlama noktası yalnızca e-posta gönderme sürecine odaklanmayı sağlar.

Send Emails In Csharp Using Fluentemail 1 related to Konsol Uygulamasını Ayarlama

Uygulamayı oluşturduktan sonra Tim, projeyi geleneksel .NET Framework'ten modern bir yükseltme olan .NET 5 hedefe alır ve böylece e-posta istemcileri için modern protokollerle daha iyi uyumluluk sağlar.

Package Manager Console aracılığıyla FluentEmail'in Yüklenmesi

Sonraki adımda 3:50'de Tim, C#'ta e-posta göndermek için smtp istemcisinin kullanımına olanak sağlayan FluentEmail.Smtp paketini yüklemek için Paket Yöneticisi Konsolunu kullanır. Buna ek olarak, Tim MailGun ve SendGrid gibi daha fazla entegrasyonun bulunduğunu ancak SMTP'nin neredeyse tüm e-posta istemcileri ve ayarlarında çalışan en evrensel seçenek olduğunu belirtir.

Send Emails In Csharp Using Fluentemail 2 related to Package Manager Console aracılığıyla FluentEmail'in Yüklenmesi

Manuel olarak kurmak için aşağıdaki komutu kullanabilirsiniz :

Install-Package FluentEmail.Smtp
Install-Package FluentEmail.Smtp

Tim, kütüphanenin çalışabilmesi için ihtiyaç duyulan FluentEmail.Core bağımlılığını da eklememiz gerektiğinden emin olur.

SMTP İstemcisi ve Sunucunun Yapılandırılması

6:10'da Tim, yeni smtpclient yapılandırmasını kullanarak smtp istemcisini ayarlamayı çekiştirir.

var sender = new SmtpSender(() => new SmtpClient("localhost")
{
    EnableSsl = false,
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = @"C:\Demos"
});
var sender = new SmtpSender(() => new SmtpClient("localhost")
{
    EnableSsl = false,
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = @"C:\Demos"
});

Tim, bu SMTP sunucu localhost yapılandırmasının yerel testler için olduğunu vurgular. Üretimde, gerçek SMTP sunucu bilgilerinize bağlanırsınız; örneğin, güvenlik için bir uygulama şifresi kullanarak Gmail'in SMTP uç noktasına.

Hassas ayarların daha iyi güvenlik ve esneklik için appsettings.json gibi bir yapılandırma dosyasına taşınması gerektiğini vurguluyor.

Basit Bir E-posta Mesajı Göndermek

11:59'da Tim, FluentEmail'in e-posta API'si kullanılarak basit bir mesaj gönderimine geçiyor. Var email nesnesinin aşağıdaki kod örneğiyle oluşturulduğunu açıklar:

var email = await Email
    .From("tim@timco.com")
    .To("test@test.com", "Sue")
    .Subject("Thanks")
    .Body("Thanks for buying our product.")
    .SendAsync();
var email = await Email
    .From("tim@timco.com")
    .To("test@test.com", "Sue")
    .Subject("Thanks")
    .Body("Thanks for buying our product.")
    .SendAsync();

Bu şekilde, method zincirlemesini kullanarak string subject, string email ve mesaj gövdesini açıkça belirtebilirsiniz. Var message (email), hata kontrolü için sonucu tutar.

Tim, email'in tim@timco.com'dan geldiği gibi görünmesine rağmen, smtp sunucusunun yine de giriş bilgisine dayanarak kimlik doğrulaması yapacağını belirtiyor.

Yerel Dizin Kullanarak E-posta Görüntüleme

E-posta mesajı gönderildikten sonra Tim, yerel klasörde bir .eml dosyası olarak nasıl göründüğünü gösterir. Outlook veya Notepad ile açabilirsiniz, ancak mevcut e-posta mesajları veya toplu test için en kullanıcı dostu değil.

Send Emails In Csharp Using Fluentemail 3 related to Yerel Dizin Kullanarak E-posta Görüntüleme

Daha Kolay Test Etmek için Papercut SMTP Kullanma

17:03'te Tim, bir dizinde kaydetme işleminden hafif bir sahte SMTP sunucusu olan Papercut SMTP kullanımına geçiyor.

Smtp istemcisi ayarlarını aşağıdaki gibi değiştiriyor :

DeliveryMethod = SmtpDeliveryMethod.Network;
Port = 25;
DeliveryMethod = SmtpDeliveryMethod.Network;
Port = 25;

Papercut ile her test e-posta hemen bir GUI'de görünür. Bu, düz metin ve HTML gövde içeriğini kontrol etmeyi çok daha kolay hale getirir ve gerçek e-posta istemcilerinin farklı formatları nasıl oluşturduğunu simüle eder.

Send Emails In Csharp Using Fluentemail 4 related to Daha Kolay Test Etmek için Papercut SMTP Kullanma

Razor Şablonlarıyla HTML E-postası Oluşturma

19:12'de Tim, birçok gerçek dünya durumu için statik düz metinlerin yeterli olmadığını kaydeder. Daha dinamik, zengin HTML mesajlar için FluentEmail.Razor paketini yüklemektedir :

Install-Package FluentEmail.Razor
Install-Package FluentEmail.Razor

Proje ayarlarını aşağıdaki şekilde günceller:

<PreserveCompilationContext>true</PreserveCompilationContext>
<PreserveCompilationContext>true</PreserveCompilationContext>

Razor şablonlarının doğru şekilde derlenmesini sağlamak için.

Bir Razor E-posta Şablonu Oluşturma ve Kullanma

Bir string builder (var builder) ve Razor sözdizimi kullanılarak Tim, dinamik bir e-posta şablonu oluşturur:

var builder = new StringBuilder();
builder.AppendLine("Dear @Model.FirstName,");
builder.AppendLine("<p>Thanks for purchasing @Model.ProductName.</p>");
builder.AppendLine("The TimCo Team");
var builder = new StringBuilder();
builder.AppendLine("Dear @Model.FirstName,");
builder.AppendLine("<p>Thanks for purchasing @Model.ProductName.</p>");
builder.AppendLine("The TimCo Team");

Ardından bu şablonu var request'e aşağıdaki kodu kullanarak ekler:

await Email
    .UsingTemplate(builder.ToString(), new { FirstName = "Tim", ProductName = "Bacon Wrapped Bacon" })
    .SendAsync();
await Email
    .UsingTemplate(builder.ToString(), new { FirstName = "Tim", ProductName = "Bacon Wrapped Bacon" })
    .SendAsync();

Bu teknik, şablon içeriğine bağlı olarak düz metin ve html gövdesi gibi farklı formatları destekler.

Birden Fazla Alıcı ve Ekleri Yönetme

Tim'in demosunda tam olarak detaylandırılmamış olsa da, FluentEmail, .To() çağrıları aracılığıyla çoklu alıcıları ve dosya ekleri için bir attachment nesnesi ekleyerek eski .NET'teki mailmessage nesnesi veya mailmessage sınıfında olduğu gibi kolayca destekler.

Bir içerik id veya satır içi görüntüler için yeni bir string dosya yolu kullanarak ekler oluşturabilirsiniz.

E-posta Gönderimi Sürecinde Hata Yönetimi

Tim, hataları zarif bir şekilde ele almanız gerektiğini ima eder. Örneğin:

try
{
    var result = await Email.SendAsync();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
try
{
    var result = await Email.SendAsync();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

Bu, özellikle smtp protokol sorunları ortaya çikarsa, e-posta gönderme sırasında herhangi bir SMTP veya ağla ilgili hatayı yakalar.

Özet ve Son Düşünceler

Yaklaşık 27:56'da Tim, FluentEmail ile C#'ta e-posta göndermenin basit mesajlardan profesyonel, dinamik HTML e-postalara kadar oldukça kolay hale geldiği sonucuna varır.

Ayrıca SMTP sunucu ayrıntılarının ve yapılandırmaların esnek tutulmasının önemini vurgular; bu özellikle yerel geliştirme ile Azure Portal gibi bulut platformları arasında geçiş yaparken appsettings.json gibi bir yapılandırma dosyası kullanırken kritik önem taşır.

E-posta göndermek için bireysel veya toplu olarak amaçlayarak, FluentEmail ve Papercut SMTP'nin birleşimi, birçok programlama dili ve ekosistemle uyumlu modern, verimli bir iş akışı sunar.

Son Düşünceler

Tim Corey'nin mükemmel videosu sayesinde, C#'da modern e-posta gönderme işlevselliğinin temel smtpclient sınıfı ve mailmessage sınıfı işlemlerinin ötesine geçtiği açık. FluentEmail yardımıyla, geliştiriciler hızla yeni bir proje oluşturabilir, bir SMTP bağlantısını yapılandırabilir, dinamik bir e-posta gövdesi oluşturabilir ve her şeyi üretime dağıtmadan önce yerel olarak test edebilir.

Hero Worlddot related to FluentEmail kullanarak C#'ta E-posta Gönderme
Hero Affiliate related to FluentEmail kullanarak C#'ta E-posta Gönderme

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara