IRONSOFTWAREHOME

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

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

Tim Corey

30m 36s

C# ile işlem e-postaları göndermek, birçok kurumsal yazılım çözümünde yaygın bir ihtiyaçtır. Ancak, Tim Corey'nin "FluentEmail kullanarak C# ile E-posta Gönderme" adlı videosunda açıkladığı gibi, bu süreç zor olmak zorunda değil. Basit metin mesajları göndermek, HTML e-postaları göndermek veya toplu e-postaları ele almak isteyip istemediğinizden bağımsız olarak, FluentEmail modern yöntemler ve SMTP protokollerini kullanarak e-posta gönderme işlevselliğini uygulamanın kolay bir yolunu sunar.

Bu makalede, Tim Corey'nin videosunu takip ederek, FluentEmail kullanarak C# içinde e-posta göndermeyi tam olarak öğrenmek için bir süreçten geçeceğiz. Bir SMTP sunucusu kuracak, dinamik HTML e-posta mesajları oluşturacak ve tüm e-posta gönderme sürecini etkili bir şekilde test edeceğiz.

FluentEmail'e Giriş

Tim, arka planı açıklayarak başlıyor: C# ile e-posta göndermek, önceden System.Net.Mail gibi eski araçlara dayanıyordu, ancak .NET 5 ve daha sonraki sürümlerde, bunların çoğu kullanımdan kaldırıldı. İşte FluentEmail, modern bir e-posta kütüphanesi, hem basit mesajlar hem de HTML e-postalar ve satır içi resimler gibi daha sofistike iletişimler için boşluğu doldurur.

Tim, amacın kolayca e-postalar oluşturmak, şablonları kullanmak ve hatta üretim sunucularına bağlanmadan test etmek olduğunu belirtir.

Konsol Uygulamasını Kurma

1:04'te, Tim EmailDemoApp adlı yeni bir Konsol Uygulaması oluşturuyor. UI'a ihtiyacınız olmadığında static void Main(string[] args) veya basitçe public static void Main ile başlamanın ne kadar kolay olduğunu vurguluyor. Temiz başlangıç noktası, yalnızca e-posta gönderim sürecine odaklanmayı sağlar.

Tim, uygulamayı oluşturduktan sonra projeyi .NET 5'e hedefleyecek şekilde ayarlıyor. Bu, geleneksel .NET Framework'e göre modern bir yükseltemedir ve e-posta istemcileri için modern protokollerle daha iyi uyumluluk sağlar.

FluentEmail'in Paket Yöneticisi Konsolu ile Kurulması

Sonraki 3:50'de Tim, bir SMTP istemcisini kullanarak C# dilinde e-posta gönderimi sağlamak için FluentEmail.Smtp paketini yüklemek amacıyla Paket Yöneticisi Konsolu'nu kullanır. Bunun yanı sıra, Tim, MailGun ve SendGrid gibi ek entegrasyonların da olduğunu belirtir ancak SMTP, çoğu e-posta istemcisi ve yapılandırması ile çalışan en evrensel seçenektir.

Aşağıdaki komutu kullanarak, onu manuel olarak yükleyebilirsiniz:

Install-Package FluentEmail.Smtp
SHELL

Tim, kütüphanenin çalışması için gerekli olan FluentEmail.Core bağımlılığını da eklediğimizden emin olur.

SMTP İstemcisini ve Sunucusunu Yapılandırma

6:10'da Tim, yeni bir SmtpClient yapılandırması kullanarak SMTP istemcisini ayarlama konusunu tartışır:

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

Tim, localhost üzerindeki bu SMTP sunucusunun yerel test için olduğunu vurgular. Üretimde, Gmail'in SMTP bitiş noktası gibi gerçek SMTP sunucu ayrıntılarına, güvenlik için bir uygulama şifresi kullanarak bağlanırsınız.

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önderme

11:59'da Tim, FluentEmail'ın e-posta API'sini kullanarak basit bir mesaj göndermeye geçer. Şu kod örneği ile bir var email nesnesinin 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();

Bu yöntemle, string konusunu, string e-posta adresini ve mesaj içeriğini yöntem zinciri kullanarak açıkça belirtebilirsiniz. Bu var message (email), hata kontrolüne olanak tanıyarak sonucu tutar.

Tim, e-postanın tim@timco.com'dan geliyormuş gibi görünmesine rağmen, SMTP sunucusunun giriş bilgilerine (örneğin bir Gmail uygulama şifresi gibi) dayalı olarak hala kimlik doğrulayacağını belirtir.

E-postayı Yerel Dizin Kullanarak Görüntüleme

E-posta mesajı gönderildikten sonra, Tim bunun yerel klasörde .eml dosyası olarak nasıl göründüğünü gösteriyor. Outlook veya Notepad ile açabilseniz de, mevcut e-posta mesajları veya toplu testler için en kullanıcı dostu seçenek değildir.

Daha Kolay Test İçin Papercut SMTP Kullanma

17:03'te Tim, bir dizine kaydetmekten Papercut SMTP, hafif bir sahte SMTP sunucusu kullanmaya geçiyor.

SMTP istemci ayarlarını şu şekilde değiştirir:

DeliveryMethod = SmtpDeliveryMethod.Network;
Port = 25;

Papercut ile her test e-postası anında 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 görüntülediğini simüle eder.

Razor Şablonları ile HTML E-posta Oluşturma

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

Install-Package FluentEmail.Razor
SHELL

Proje ayarlarını şu şekilde günceller:

<PreserveCompilationContext>true</PreserveCompilationContext>

Razor şablonlarının doğru şekilde derlendiğinden emin olmak için.

Razor E-posta Şablonu Oluşturma ve Kullanma

Tim, bir string builder (var builder) ve Razor söz dizimini kullanarak, 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");

Daha sonra bu şablonu aşağıdaki kodu kullanarak var request'e ekler:

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övde gibi farklı formatları destekler.

Birden Fazla Alıcı ve Ekleri Yönetmek

Tim'in demosunda tam olarak detaylandırılmasa da, FluentEmail .To() çağrıları aracılığıyla birden fazla alıcıyı kolayca destekler ve eski .NET'te MailMessage nesnesi veya MailMessage sınıfının nasıl çalıştığına benzer şekilde dosya ekleri için bir ek nesnesi ekler.

Satır içi görüntüler için yeni bir dizge dosya yolu veya içerik kimliği kullanarak ekler oluşturabilirsiniz.

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

Tim, hataların nazikçe ele alınması gerektiğini işaret ediyor. Örneğin:

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

Bu, özellikle SMTP protokolü sorunları ortaya çıktığında, e-posta gönderim süreci sırasında meydana gelebilecek herhangi bir SMTP veya ağ ile ilgili hatayı yakalar.

Özet ve Son Düşünceler

27:56 civarında, Tim, FluentEmail ile C#'ta e-posta göndermenin basit hale geldiğini — 'merhaba dünya' tarzı basit mesajlardan profesyonel, dinamik HTML e-postalara kadar değinir.

Ayrıca, yerel geliştirme ile Azure Portal gibi bulut platformları arasında geçiş yaparken SMTP sunucu detaylarını ve yapılandırmalarını appsettings.json gibi bir yapılandırma dosyası kullanarak esnek tutmanın önemini vurgular.

İster bireysel ister toplu e-postalar göndermeyi hedefleyin, FluentEmail ile Papercut SMTP, birçok programlama dili ve ekosistemle uyumlu modern ve verimli bir iş akışı sunar.

Son Düşünceler

Tim Corey'nin mükemmel videosu sayesinde modern e-posta gönderim işlevselliğinin C#'ta temel SmtpClient sınıfı ve MailMessage sınıfı işlemelerinin ötesine geçtiği açıktır. FluentEmail yardımıyla geliştiriciler, yeni bir proje hızla oluşturabilir, bir SMTP bağlantısını yapılandırabilir, dinamik bir e-posta gövdesi hazırlayabilir ve üretim ortamına dağıtmadan önce her şeyi yerel olarak test edebilirler.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez