Отправляем Письма с Помощью FluentEmail
В вашем приложении зарегистрировался новый пользователь? Код подтверждения должен быть отправлен на его email. Пользователь забыл пароль? Нужно отправить ему ссылку для сброса пароля. Сегодня приложения не могут существовать без отправки электронной почты. Поэтому нужно что-то легко и быстро настраиваемое для отправки электронных писем.
FluentEmail — популярная библиотека с открытым исходным кодом для отправки email из приложений .NET. Он предоставляет fluent-интерфейс, т.е. мы можем легко создать сообщение, добавить получателей, установить тему и т. д., используя цепочку методов.
Сначала нужно добавить в проект NuGet-пакеты FluentEmail.Core и FluentEmail.Smtp. Теперь создать и отправить email очень просто:
var email = await EmailЗаметьте, что From – единственный статический метод, поэтому в этом примере должен идти первым.
.From("from@email.com")
.To("to@email.com")
.Subject("Hi")
.Body("Hello world!")
.SendAsync();
Доступны наиболее распространённые методы:
- .To(string emailAddress) — добавить получателей.
- .SetFrom(string emailAddress) — изменить адрес отправителя.
- .CC/BCC(string emailAddress) — добавление CC или BCC.
- .Subject(string subject) — тема.
- .Body(string body) — тело сообщения.
- .Attach(Attachment attachment) — вложения.
- .UsingTemplate(string template, T model, bool isHtml = true) — использовать шаблон (см. ниже).
- .SendAsync() — отправить, используя настроенного отправителя (см. ниже).
Более правильным подходом будет настроить отправителя и шаблон в DI-контейнере:
builder.Services- .AddFluentEmail() – настраивает FluentEmail с адресом отправителя по умолчанию.
.AddFluentEmail("from@email.com")
.AddRazorRenderer()
.AddSmtpSender(…);
- AddSmtpSender() – настраивает провайдера отправителя SmtpSender.
- AddRazorRenderer() – настраивает провайдера шаблонов RazorRenderer.
Использование Razor-шаблонов сообщений – одна из самых популярных функций FluentEmail. Чтобы её использовать, добавьте NuGet-пакет FluentEmail.Razor. RazorRenderer поддерживает любой код Razor. Используя шаблоны, вы можете заменить вызов
.Body(…) в примере выше на один из следующих:-
UsingTemplate<T>(string template, T model) – использует шаблон из строки template (не очень удобно писать код Razor внутри простой строки, но подойдёт для простых шаблонов).-
UsingTemplateFromFile<T>(string fileName, T model) – позволяет указать путь к файлу шаблона – обычной странице .cshtml.FluentEmail позволяет вам подключить популярные провайдеры отправки email (или создать собственный, реализовав интерфейс ISender). Чтобы использовать отправителя, добавьте провайдера и настройте его в DI-контейнере. Доступны следующие основные провайдеры:
- SMTP – стандартный клиент System.Net.Mail.SmtpClient
- Mailgun
- SendGrid
- MimeKit
Например, добавить провайдера SendGrid можно, установив NuGet-пакет FluentEmail.SendGrid и вызвав:
builder.ServicesИсточники:
.AddFluentEmail("from@email.com")
.AddRazorRenderer()
.AddSendGridSender("apikey");
- https://stefandjokic.tech/blog.html
- https://lukelowrey.com/send-email-in-dotnet-core-with-fluent-email/