Как отправлять электронные письма с помощью SendGrid в ASP.NET Core

автор vadim


У вас часто будет необходимость отправлять электронные письма через ваше приложение. Есть несколько инструментов и библиотек, которые помогут вам в этом. А облачные почтовые службы с удобными API-интерфейсами упрощают встраивание многофункциональных почтовых служб в ваши приложения. Один из самых популярных и полезных облачных почтовых сервисов — SendGrid.

SendGrid может помочь предприятиям и разработчикам отправлять как маркетинговые, так и транзакционные электронные письма. Он предоставляет простую, надежную и масштабируемую инфраструктуру электронной почты, которая позволяет компаниям сосредоточиться на своих основных операциях, обеспечивая при этом доставку электронной почты предполагаемым получателям. А SendGrid предоставляет API и библиотеки для множества различных языков программирования и сред, включая C# и .NET.

В этой статье мы рассмотрим, как мы можем использовать SendGrid для отправки электронных писем из приложения ASP.NET Core 7. Мы рассмотрим следующие моменты:

  • Введение в SendGrid и почему это полезно
  • Как сгенерировать ключ API SendGrid
  • Как указать метаданные SendGrid в файле конфигурации приложения
  • Как создать класс EmailService для отправки электронных писем с помощью SendGrid
  • Как создать класс EmailController для приема HTTP-запросов

Чтобы использовать примеры кода, представленные в этой статье, в вашей системе должна быть установлена ​​Visual Studio 2022. Если у вас еще нет копии, вы можете скачать Visual Studio 2022 здесь.

Также обратите внимание, что вам нужно будет зарегистрировать учетную запись SendGrid, чтобы использовать сервис. Бесплатный план позволяет отправлять 100 писем в день.

Создайте проект веб-API ASP.NET Core 7 в Visual Studio 2022.

Прежде всего, давайте создадим минимальный проект веб-API ASP.NET Core 7 в Visual Studio 2022. Выполните следующие действия:

  1. Запустите интегрированную среду разработки Visual Studio 2022.
  2. Нажмите «Создать новый проект».
  3. В окне «Создать новый проект» выберите «ASP.NET Core Web API» из списка отображаемых шаблонов.
  4. Нажмите “Далее.
  5. В окне «Настроить новый проект» укажите имя и расположение нового проекта.
  6. При желании установите флажок «Поместить решение и проект в один каталог», в зависимости от ваших предпочтений.
  7. Нажмите “Далее.
  8. В показанном ниже окне «Дополнительная информация» снимите флажок «Использовать контроллеры…», поскольку в этом примере мы будем использовать минимальное количество API. Оставьте «Тип аутентификации» как «Нет» (по умолчанию).
  9. Убедитесь, что флажки «Включить поддержку Open API», «Настроить для HTTPS» и «Включить Docker» сняты, поскольку мы не будем использовать эти функции здесь.
  10. Щелкните Создать.

Мы будем использовать этот проект веб-API ASP.NET Core 7 для работы с SendGrid в следующих разделах.

Зачем использовать SendGrid?

API электронной почты SendGrid позволяет разработчикам легко интегрировать функции электронной почты в свои приложения. Вы можете использовать API SendGrid для отправки электронных писем, отслеживания доставки электронной почты и мониторинга производительности электронной почты.

С помощью SendGrid предприятия могут легко отправлять автоматические сообщения электронной почты, в том числе приветственные письма, уведомления о сбросе пароля, подтверждения доставки, квитанции о покупках и многое другое. Платформа SendGrid предлагает множество функций, призванных сделать отправку электронной почты более легкой и эффективной.

SendGrid также предлагает инструменты, которые помогают компаниям разрабатывать, управлять и оптимизировать кампании по электронной почте. Эти инструменты включают шаблоны электронной почты, функции управления списками и аналитику кампаний. В дополнение к своим основным службам электронной почты SendGrid предлагает ряд дополнительных услуг, включая инструменты проверки и тестирования электронной почты.

Генерация ключа API в SendGrid

Если у вас уже есть учетная запись SendGrid, вы можете войти и продолжить. Если нет, вы можете зарегистрировать новую учетную запись SendGrid здесь. Затем выполните следующие действия:

  1. Войдите в свою учетную запись SendGrid.
  2. Выберите «Настройки» -> «Аутентификация отправителя».
  3. Выберите «Подтверждение одного отправителя».
  4. Нажмите на кнопку «Начать».
  5. Создайте отправителя, указав данные отправителя.
  6. Нажмите на кнопку «Подтвердить одного отправителя».
  7. Подтвердите своего единственного отправителя, нажав на электронное письмо, которое вы получаете от SendGrid.
  8. Далее выберите «Настройки» -> «Ключи API».
  9. Нажмите на кнопку «Создать ключ API».
  10. Укажите уровень разрешений для вашего ключа API.
  11. Нажмите кнопку «Создать и просмотреть», чтобы сгенерировать ключ API.
  12. Сохраните сгенерированный ключ API, потому что вы будете использовать его в ближайшее время.

Установите NuGet-пакет SendGrid.

Все идет нормально. Теперь добавьте пакет NuGet SendGrid в свой проект в Visual Studio. Для этого выберите проект в окне обозревателя решений, щелкните правой кнопкой мыши и выберите «Управление пакетами NuGet». В окне диспетчера пакетов NuGet найдите пакет SendGrid и установите его.

Кроме того, вы можете установить пакет через консоль диспетчера пакетов NuGet, введя строку, показанную ниже.

PM> Install-Package SendGrid

Укажите метаданные SendGrid в файле конфигурации.

Создайте раздел с именем EmailSettings в файле конфигурации вашего приложения и введите в него следующий код.

  "EmailSettings": {
    "ApiKey": "Specify your Api Key here...",
    "SenderEmail": "testaddress@testemail.com",
    "SenderName": "NoReply"
  }

Обязательно замените «Укажите свой ключ API SendGrid» своим ключом API SendGrid для используемой учетной записи SendGrid.

Чтобы привязать экземпляр типа EmailSettings к значениям конфигурации, введите следующий код в файл Program.cs.

builder.Services.Configure<EmailSettings>
   (options => builder.Configuration.GetSection("EmailSettings").Bind(options));

Использование SendGrid в ASP.NET Core

В этом разделе мы рассмотрим, как мы можем отправлять электронную почту с помощью SendGrid в ASP.NET Core.

Создайте класс EmailService

Теперь создайте класс с именем EmailService, который будет отвечать за отправку электронных писем с помощью SendGrid. Для этого создайте новый файл .cs с именем EmailService.cs и введите следующий код.

public class EmailService : IEmailService
{
    private readonly IConfiguration _configuration;
    private readonly IOptions<EmailSettings>  _options;
    public EmailService(IConfiguration configuration, IOptions<EmailSettings> options)
    {
         _configuration = configuration;
         _options = options;
    }
public async Task SendEmailAsync(string email, string subject, string htmlMessage)
  {
       string? fromEmail = _options.Value.SenderEmail;
       string? fromName = _options.Value.SenderName;
       string? apiKey = _options.Value.ApiKey;
       var sendGridClient = new SendGridClient(apiKey);
       var from = new EmailAddress(fromEmail, fromName);
       var to = new EmailAddress(email);
       var plainTextContent = Regex.Replace(htmlMessage, "<[^>]*>", "");
       var msg = MailHelper.CreateSingleEmail(from, to, subject,
       plainTextContent, htmlMessage);
       var response = await sendGridClient.SendEmailAsync(msg);
   }
}

Обратите внимание, как здесь используется шаблон Options для извлечения метаданных электронной почты из файла конфигурации приложения.

Создайте класс EmailController.

Создайте новый контроллер API в своем проекте с именем EmailController. В контроллере внедрите экземпляр типа EmailService и вызовите метод SendEmailAsync:

[Route("api/[controller]")]
[ApiController]
public class EmailController : ControllerBase
{
   private readonly IEmailService _emailService;
   private readonly ILogger<EmailController> _logger;
   public EmailController(IEmailService emailService,
        ILogger<EmailController> logger)
   {
            _emailService = emailService;
            _logger = logger;
   }
   [HttpGet]
   public async Task<IActionResult> Get()
   {
       await _emailService.SendEmailAsync("email@email.com", "Some subject", "Specify the html content here");
       return Ok();
   }
}

Теперь добавьте службу Singleton типа IEmailService, включив следующий код в файл Program.cs.

builder.Services.AddSingleton<IEmailService, EmailService>();

Вот и все! Когда вы запускаете свое приложение и выполняете действие HttpGet вашего EmailController, электронное письмо будет отправлено с использованием библиотеки SendGrid.

Зарегистрируйте SendGrid как службу и используйте DI

Обратите внимание, что вы также можете зарегистрировать SendGrid в качестве службы и воспользоваться внедрением зависимостей для внедрения экземпляра SendGrid в свое приложение. Чтобы зарегистрировать SendGrid в качестве службы, введите следующий код в файл Program.cs.

using SendGrid.Extensions.DependencyInjection;
builder.Services.AddSendGrid(options =>
{
    options.ApiKey = builder.Configuration
    .GetSection("EmailSettings").GetValue<string>("ApiKey");
});

Как мы видели, SendGrid предлагает надежный API, который мы можем использовать для простой интеграции возможностей электронной почты в наши приложения. SendGrid также интегрируется с различными сторонними приложениями и службами, включая WordPress, Salesforce, Shopify и Microsoft Azure. Если вам нужна надежная и масштабируемая служба электронной почты, которая поможет вам охватить свою аудиторию и развивать свой бизнес, SendGrid — отличный выбор.

Related Posts

Оставить комментарий