Jak szybko zaimplementować wysyłkę wiadomości e-mail? FluentEmail – all in one .NET core mail sender.

Wysyłka wiadomości e-mail to nieodłączna część logiki wielu aplikacji. W tym wpisie przedstawię Ci jak można ją zaimplementować używając biblioteki open source – FluentEmail. A możesz to zrobić w mniej niż 10 min! Brzmi obiecująco?

Wysyłka wiadomości e-mail to nieodłączna część logiki wielu aplikacji. W tym wpisie przedstawię Ci jak można ją zaimplementować używając biblioteki open source – FluentEmail. Możesz to zrobić w mniej niż 10 min! Brzmi obiecująco?

No dobrze, zanim przejdziemy do przykładów kodu pozwól, że przedstawię zalety tej biblioteki. Z jakiegoś powodu ją lubię, prawda? 😀 Oto 6 cech, za które ma u mnie wielki plus:

  1. Prosta konfiguracja: FluentEmail zapewnia łatwą i zrozumiałą konfigurację zarówno dla prostych, jak i zaawansowanych scenariuszy wysyłki e-maili.
  2. Przyjazny dla programistów interfejs: Biblioteka oferuje interfejs oparty na wzorcu Fluent Interface, który umożliwia intuicyjne tworzenie skomplikowanych wiadomości e-mail.
  3. Wsparcie dla różnych dostawców: FluentEmail obsługuje wiele popularnych dostawców e-mailowych, takich jak SMTP, SendGrid, Mailgun itp.
  4. Możliwość tworzeni szablonów wiadomości: Biblioteka umożliwia tworzenie szablonów wiadomości, co ułatwia dostosowanie treści e-maila do indywidualnych potrzeb.
  5. Obsługa załączników: FluentEmail umożliwia dołączanie plików do wiadomości e-mail, co jest przydatne przy wysyłaniu dokumentów, obrazów lub innych materiałów.
  6. Śledzenie statusu dostarczenia: Biblioteka oferuje funkcje śledzenia wiadomości e-mail, umożliwiając sprawdzenie, czy wiadomość została dostarczona do odbiorcy.

Darmowa biblioteka, z dobrą dokumentacją, działającym kodem i przejrzystym sposobem użycia.

Przyznaj – czego chcieć więcej?

Instalacja

Nic bardziej prostego. Bibliotekę możesz zainstalować używając menadżera pakietów NuGet lub z poziomu .NET CLI:

dotnet add package FluentEmail.Core

Po za tym pakietem należy zainstalować jeden dodatkowy, odpowiedzialny za to jaką drogą chcemy wysyłać maile. Podstawowym sposobem jest serwer SMTP. Jeżeli wybierasz tę drogę wysyłki, należy doinstalować pakiet Smtp:

dotnet add package FluentEmail.Smtp

Biblioteka wspiera szereg innych mail providerów:

Konfiguracja

Po instalacji odpowiednich pakietów możemy przejść do właściwej konfiguracji. Biblioteka oferuje nam specjalne helpery, które znacząco upraszczają ten proces. Podstawowa konfiguracja opiera się na wywołaniu helperów w Startup.cs :

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddFluentEmail("fromemail@test.test")
        .AddRazorRenderer()
        .AddSmtpSender("localhost", 25);
}

Proste? Pewnie, że tak! Idziemy dalej.

Na potrzeby tego wspisu przyjmijmy, że logika do wysyłki e-maili będzie zaimplementowana w klasie EmailService.cs:

public class EmailService {

   private IFluentEmail _fluentEmail;

   public EmailService(IFluentEmail fluentEmail) {
     _fluentEmail = fluentEmail;
   }

   public async Task Send() {
     await _fluentEmail.To("hellO@gmail.com")
     .Body("The body").SendAsync();
   }
}

W powyższym przykładzie będziemy wysyłać tylko jedną wiadomość w danym kontekście. Dlatego w konstruktorze wstrzykujemy parametr typu IFluentEmail. Jeżeli chcielibyśmy wysyłać kilka wiadomości pod rząd, w jednym kontekście należałoby użyć IFluentEmailFactory.

Komponowanie i wysyłka wiadomości

Wiadomość tworzymy przy użyciu dedykowanych metod:

  • .To(string emailAddress) – dodajemy odbiorców
  • .SetFrom(string emailAddress) – zmieniamy adres nadawcy
  • .CC/BCC(string emailAddress) – dodajemyu DW lub UDW
  • .Subject(string subject) – ustawiamy temat wiadomości
  • .Body(string body) – ustawiamy treść maila (bez szablonu). Jeżeli chcesz użyć HTML pamiętaj o ustawieniu isHtml na true
  • .Attach(Attachment attachment) – dodaje załącznk
  • UsingTemplate(string template, T model, bool isHtml = true) – ustawia szablon wiadomości
  • SendAsync() – wysyła wiadomość poprzez ustawiony w konfiguracji provider

Szablony

Tutaj także nie ma magii. Wystarczy odpowiednio skonfigurować szablon, aby móc wypełnić go danymi i użyć w wiadomości:

Email.DefaultRenderer = new RazorRenderer();

var template = "Witaj @Model.Name! Gratulacje wykonanego zadania!";

var email = Email
    .From("admin@programistaoptymista.pl")
    .To("lukasz@gmail.com")
    .Subject("Gratulacje!")
    .UsingTemplate(template, new { Name = "Lukasz" });

Szczegółowe omówienie szablonów dostępne TUTAJ

Podsumowanie

FluentEmail to jedna z moich ulubionych bibliotek. Prosta w użyciu, bezproblemowa w obsłudze.

A co Ty o niej sądzisz? Korzystałeś/aś z niej w swoich projektach?

Nie?Musisz spróbować!

Tak?Podziel się opinią w komentarzu!

0 Shares:
You May Also Like
Czytaj więcej...

Flutter #1. Wprowadzenie.

Na co dzień pracuję z technologiami dedykowanymi aplikacjom internetowym. Mam styczność zarówno z bazami danych, logiką serwerową jak…
Czytaj więcej...

Syndrom oszusta – znasz?

Odczuwasz, że nie jesteś wystarczająco dobry, albo nie masz kwalifikacji do wykonywania swojej pracy? A może w trakcie…