<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Angelo Pirola</title>
    <description>The latest articles on DEV Community by Angelo Pirola (@angelodotnet).</description>
    <link>https://dev.to/angelodotnet</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1072918%2F4c8e5e98-77cf-4cb4-a7e9-17c9dafd6045.jpeg</url>
      <title>DEV Community: Angelo Pirola</title>
      <link>https://dev.to/angelodotnet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/angelodotnet"/>
    <language>en</language>
    <item>
      <title>Hacktoberfest 2025</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Sat, 11 Oct 2025 07:00:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/hacktoberfest-2025-5549</link>
      <guid>https://dev.to/angelodotnet/hacktoberfest-2025-5549</guid>
      <description>&lt;p&gt;Hacktoberfest 2025: One Brick at a Time! I'm thrilled to have helped make open source a better place with Hacktoberfest. &lt;/p&gt;

&lt;p&gt;Every pull request, no matter how small, is a step toward a more collaborative and innovative future.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F915pcp8iyexfh96rn2e2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F915pcp8iyexfh96rn2e2.png" alt=" " width="603" height="753"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>programming</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>How to easily integrate and extend authentication in ASP.NET Core projects, using ASP.NET Core Identity</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Fri, 01 Aug 2025 07:23:02 +0000</pubDate>
      <link>https://dev.to/angelodotnet/how-to-easily-integrate-and-extend-authentication-in-aspnet-core-projects-using-aspnet-core-130p</link>
      <guid>https://dev.to/angelodotnet/how-to-easily-integrate-and-extend-authentication-in-aspnet-core-projects-using-aspnet-core-130p</guid>
      <description>&lt;p&gt;A few weeks ago, we ported the project shown in this &lt;a href="https://dev.to/angelodotnet/how-to-manage-roles-permissions-and-more-using-jwt-token-and-aspnet-core-identity-11k0"&gt;post&lt;/a&gt; to make it more dynamic and easier to implement and maintain.&lt;/p&gt;

&lt;p&gt;📢 A new GitHub repository has been created, available &lt;a href="https://github.com/AngeloDotNet/MinimalApi.Identity" rel="noopener noreferrer"&gt;here&lt;/a&gt;, and still under development/implementation. &lt;/p&gt;

&lt;p&gt;⚠️ Important&lt;br&gt;
This library is still under development of new implementations and in the process of creating the related documentation.&lt;/p&gt;

&lt;p&gt;🧩 Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimal API&lt;/strong&gt;: Built using .NET 8 Minimal API for a lightweight and efficient implementation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entity Framework Core&lt;/strong&gt;: Uses EF Core for data access, making it easy to integrate with your existing database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular&lt;/strong&gt;: The library is designed to be modular, allowing you to add or remove features as needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic&lt;/strong&gt;: Supports dynamic management of users, roles, claims, forms, licensing and policies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Configuration&lt;/strong&gt;: Easily configurable via &lt;code&gt;appsettings.json&lt;/code&gt; to suit your application's needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outbox Pattern&lt;/strong&gt;: Implement the &lt;a href="https://microservices.io/patterns/data/transactional-outbox.html" rel="noopener noreferrer"&gt;transactional outbox pattern&lt;/a&gt; for reliable email sending.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows for modular management of the original library available in this GitHub &lt;a href="https://github.com/AngeloDotNet/Packages.MinimalApi.Identity" rel="noopener noreferrer"&gt;repository&lt;/a&gt; based on the project's needs, without having to configure everything immediately.&lt;/p&gt;

&lt;p&gt;Contributions are also welcome. &lt;/p&gt;

&lt;p&gt;Please report issues and pull requests on the repository, and don't forget to ⭐ on GitHub if you find this project useful to show your support and help others discover it!&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>webapi</category>
      <category>csharp</category>
      <category>microservices</category>
    </item>
    <item>
      <title>How can dynamically add separate API endpoints</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 05 Jun 2025 05:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/how-can-dynamically-add-separate-api-endpoints-4h56</link>
      <guid>https://dev.to/angelodotnet/how-can-dynamically-add-separate-api-endpoints-4h56</guid>
      <description>&lt;p&gt;The example in the github repository below shows a simple implementation on how you can add API endpoints (and their dependencies, via dependency injection) by linking external class library projects or adding their Nuget packages (if the class libraries are released as a Nuget package).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/NET8-SampleDynamicallyAddAPIEndpoints" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>webapi</category>
      <category>csharp</category>
      <category>development</category>
    </item>
    <item>
      <title>How to connect two microservices with RabbitMQ and Rebus</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Mon, 26 May 2025 05:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/how-to-connect-two-microservices-with-rabbitmq-and-rebus-278</link>
      <guid>https://dev.to/angelodotnet/how-to-connect-two-microservices-with-rabbitmq-and-rebus-278</guid>
      <description>&lt;p&gt;The example in the github repository below shows a simple implementation of two microservices (.NET 8 Web Api) communicating with each other via RabbitMQ and Rebus.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/NET8-SampleRabbitMQRebus" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>rebus</category>
      <category>webapi</category>
    </item>
    <item>
      <title>How to manage users, roles, and claims, using jwt token and asp.net core identity</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 06 Mar 2025 06:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/how-to-manage-roles-permissions-and-more-using-jwt-token-and-aspnet-core-identity-11k0</link>
      <guid>https://dev.to/angelodotnet/how-to-manage-roles-permissions-and-more-using-jwt-token-and-aspnet-core-identity-11k0</guid>
      <description>&lt;p&gt;&lt;strong&gt;IMPORTANT:&lt;/strong&gt; We recommend reading the updated article available at this &lt;a href="https://dev.to/angelodotnet/alternative-how-to-manage-users-roles-and-claims-using-jwt-token-and-aspnet-core-identity-c0i"&gt;link&lt;/a&gt;. Thank you.&lt;/p&gt;




&lt;p&gt;After seeing how to protect minimal APIs with JWT tokens and Asp.Net Core Identity, in &lt;a href="https://dev.to/angelodotnet/how-to-secure-minimal-api-microservices-with-aspnet-core-identity-2o68"&gt;this article&lt;/a&gt;, I want to share a next step, which I found myself facing for personal needs, that is how to make the management of JWT token claims dynamic in order to manage roles, claims, modules and licenses.&lt;/p&gt;

&lt;p&gt;To obtain a working example that uses this implementation, I created this &lt;a href="https://github.com/AngeloDotNet/Packages.MinimalApi.Identity/tree/main/IdentityManager.API" rel="noopener noreferrer"&gt;project&lt;/a&gt; (wrapper extender of ASP.NET Core Identity) that uses a SQL server database and allows this dynamic management.&lt;/p&gt;

&lt;p&gt;The implementation explained above is available as a Nuget package, available at this &lt;a href="https://www.nuget.org/packages/MinimalApi.Identity.API" rel="noopener noreferrer"&gt;link&lt;/a&gt;, while the code is available in this &lt;a href="https://github.com/AngeloDotNet/Packages.MinimalApi.Identity" rel="noopener noreferrer"&gt;repository&lt;/a&gt;, which will be enriched with additional features and documentation in the coming weeks.&lt;/p&gt;

&lt;p&gt;The project is constantly evolving. Contributions are welcome. Feel free to file issues and pull requests on the repository and don't forget that if you find this project useful, put a ⭐ on GitHub to show your support and help others discover it!&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>api</category>
      <category>identity</category>
    </item>
    <item>
      <title>How to use SignalR in a Blazor WebAssembly and Web API project</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 13 Feb 2025 06:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/how-to-use-signalr-in-a-blazor-webassembly-and-web-api-project-27cp</link>
      <guid>https://dev.to/angelodotnet/how-to-use-signalr-in-a-blazor-webassembly-and-web-api-project-27cp</guid>
      <description>&lt;p&gt;This post was born from a personal need during the development of a notification system in a festival management application, which I am currently developing (the source can be found in this &lt;a href="https://github.com/AngeloDotNet/GSWCloudApp" rel="noopener noreferrer"&gt;repository&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;There will be a need to implement a notification service in the client part (frontend), but the notifications will have to be generated automatically by the backend part.&lt;/p&gt;

&lt;p&gt;Faced with this need in the short term, I created this example &lt;a href="https://github.com/AngeloDotNet/Sample-API-SendNotify-BlazorWasm" rel="noopener noreferrer"&gt;repository&lt;/a&gt;, which contains two client projects (client and client2), and a server project (server).&lt;/p&gt;

&lt;p&gt;By starting the server and client projects, you can have a demo of signalR generates notifications in a razor page, with the help of Mudblazor these notifications have a different color based on the severity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg79sgorym1lc76bwuqvu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg79sgorym1lc76bwuqvu.png" width="351" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, it was chosen to use the "notify-client" endpoints generating the notification in grey and "notify-client-info" generating the notification in light blue.&lt;/p&gt;

&lt;p&gt;To generate these notifications you can use swagger of the backend project, testing the endpoints that contain the nomenclature "notify-client"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwm1tuf3nt98rye2qi002.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwm1tuf3nt98rye2qi002.png" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead, by starting the server and client projects, you can have a demo of signalR that generates notifications in a Razor page, with the help of Mudblazor the notifications will all have the same color, in this case gray and in the backend part the endpoint to use will be the one called "notify-client2", alternatively you can use the button on the frontend "Send notification"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7foxuann9rc7skiajsnl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7foxuann9rc7skiajsnl.png" width="338" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like my open source works don't forget to "follow me" on GitHub and/or click the repository's starred button.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>blazor</category>
      <category>webassembly</category>
      <category>csharp</category>
    </item>
    <item>
      <title>How to secure minimal api microservices with asp.net core identity</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Fri, 03 Jan 2025 13:00:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/how-to-secure-minimal-api-microservices-with-aspnet-core-identity-2o68</link>
      <guid>https://dev.to/angelodotnet/how-to-secure-minimal-api-microservices-with-aspnet-core-identity-2o68</guid>
      <description>&lt;p&gt;The project "MinimalApi.AuthJWTIdentity" demonstrates how to configure authentication and authorization using .NET Identity and JWT tokens shared between two microservices (web APIs). &lt;/p&gt;

&lt;p&gt;Here is a detailed summary of the project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; To provide an example of configuring authentication and authorization using .NET Identity and JWT tokens for two microservices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope:&lt;/strong&gt; The example includes minimal configuration and excludes advanced features like token refresh, role management, and claims. However, these features can be added with additional configuration.&lt;br&gt;
Project Structure&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservice01:&lt;/strong&gt; Contains the Program.cs and appsettings.json files for its configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservice02:&lt;/strong&gt; Similar structure to Microservice01 with its own &lt;br&gt;
Program.cs and appsettings.json.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MicroserviceAuth:&lt;/strong&gt; Manages authentication and contains the main logic for user registration and login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main Files:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;README.md:&lt;/strong&gt; Describes the project and its purpose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Program.cs of Microservice01:&lt;/strong&gt; Sets up the microservice, adds authentication and authorization, and defines a secure endpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Program.cs of Microservice02:&lt;/strong&gt; Similar to Microservice01 with its own setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Program.cs of MicroserviceAuth:&lt;/strong&gt; Manages user registration, login, and JWT token generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration Files:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;appsettings.json of Microservice01:&lt;/strong&gt; Contains JWT settings and logging configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;appsettings.json of Microservice02:&lt;/strong&gt; Similar to Microservice01 with its own configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;appsettings.json of MicroserviceAuth:&lt;/strong&gt; Contains JWT settings and logging configuration for the authentication service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup and Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each microservice has its own Program.cs file that sets up the web application, adds authentication and authorization services, and defines endpoints.&lt;/p&gt;

&lt;p&gt;The appsettings.json files in each microservice contain the JWT token settings and logging configuration.&lt;/p&gt;

&lt;p&gt;The MicroserviceAuth service handles user registration and login, generating JWT tokens for authenticated users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Components&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication and Authorization:&lt;/strong&gt; Implemented using .NET Identity and JWT tokens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices:&lt;/strong&gt; Each microservice has its own setup and configuration, sharing the JWT token settings across the services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endpoints:&lt;/strong&gt; Secure endpoints are defined in each microservice, requiring authentication to access.&lt;/p&gt;

&lt;p&gt;This project provides a foundational example of using .NET Identity and JWT for securing microservices, with the potential for extending functionality with additional configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/MinimalApi.AuthJWTIdentity" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>jwt</category>
      <category>identity</category>
    </item>
    <item>
      <title>How to connect two microservices with RabbitMQ</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Fri, 27 Dec 2024 06:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/example-of-microservice-communication-with-rabbitmq-3b2f</link>
      <guid>https://dev.to/angelodotnet/example-of-microservice-communication-with-rabbitmq-3b2f</guid>
      <description>&lt;p&gt;The example in the github repository below shows a simple implementation of two microservices (.NET 8 Web Api) communicating with each other via RabbitMQ queues.&lt;/p&gt;

&lt;p&gt;If you want a two-way communication instead, we recommend reading the article example of Microservice Communication with RabbitMQ and MassTransit (click &lt;a href="https://dev.to/angelodotnet/making-two-microservices-communicate-using-rabbitmq-and-masstransit-2g8i"&gt;here&lt;/a&gt; to read the article)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/NET8-SampleRabbitMQ" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>microservices</category>
      <category>csharp</category>
      <category>mqtt</category>
    </item>
    <item>
      <title>How to create a simple appointment calendar</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 19 Dec 2024 06:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/example-to-create-a-appointment-calendar-477n</link>
      <guid>https://dev.to/angelodotnet/example-to-create-a-appointment-calendar-477n</guid>
      <description>&lt;p&gt;The example in the github repository below shows how to create a simple appointment calendar (currently they are generated hard coded, but there is a comment (to read the comment click &lt;a href="https://github.com/AngeloDotNet/AppointmentCalendar/blob/main/src/CalendarioEventi/Pages/Calendar.razor.cs#L45" rel="noopener noreferrer"&gt;here&lt;/a&gt;) in case you want to retrieve them from an external API service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/AppointmentCalendar" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>blazor</category>
      <category>webdev</category>
      <category>calendar</category>
    </item>
    <item>
      <title>Docker configurations for .NET applications and more</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 12 Dec 2024 06:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/docker-configurations-for-net-applications-and-more-1pg8</link>
      <guid>https://dev.to/angelodotnet/docker-configurations-for-net-applications-and-more-1pg8</guid>
      <description>&lt;p&gt;This repository contains Docker configurations, including Docker Compose files and Dockerfiles, to simplify the configuration and deployment of containerized applications.&lt;/p&gt;

&lt;p&gt;It provides a consistent and reproducible environment for development, testing, and production. Configurations are designed to be easily customizable and extensible to suit various use cases and application requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/Docker.Application" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>community</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>How to create a background email sender with outbox pattern integration</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 05 Dec 2024 06:30:00 +0000</pubDate>
      <link>https://dev.to/angelodotnet/example-to-create-a-background-email-sender-with-outbox-pattern-integration-4cdl</link>
      <guid>https://dev.to/angelodotnet/example-to-create-a-background-email-sender-with-outbox-pattern-integration-4cdl</guid>
      <description>&lt;p&gt;After having seen previously (for the previous post click &lt;a href="https://dev.to/angelodotnet/example-to-create-a-background-email-sender-31i"&gt;here&lt;/a&gt;), how to implement a hosted service for sending emails with automatic repetition, in this example I implement the outbox pattern that allows an automatic resend system for emails that previously the hosted service system had failed to perform due to the number of failed attempts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/BackgroundEmailSender.OutboxPattern" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>outbox</category>
      <category>dotnetcore</category>
    </item>
    <item>
      <title>How to create a background email sender</title>
      <dc:creator>Angelo Pirola</dc:creator>
      <pubDate>Thu, 28 Nov 2024 23:58:53 +0000</pubDate>
      <link>https://dev.to/angelodotnet/example-to-create-a-background-email-sender-31i</link>
      <guid>https://dev.to/angelodotnet/example-to-create-a-background-email-sender-31i</guid>
      <description>&lt;p&gt;The example in the github repository below shows how a Hosted Service for sending emails with automatic retry (number of attempts and number of retries configurable in the appsettings.json file) in a project developed with .NET 6 (it will be migrated to .NET 8 in the next weeks).&lt;/p&gt;

&lt;p&gt;This example is a fork of a project developed by Moreno Gentili (&lt;a href="https://github.com/BrightSoul/background-email-sender" rel="noopener noreferrer"&gt;Repository&lt;/a&gt;), whom I thank for providing me with the information necessary to complete the implementation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AngeloDotNet/BackgroundEmailSender" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comments and/or suggestions are always welcome.&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>opensource</category>
      <category>dotnetcore</category>
    </item>
  </channel>
</rss>
