diff --git a/src/presentation/DigitalData.MessagingService.Client/DependencyInjection/DependencyInjectionExtensions.cs b/src/presentation/DigitalData.MessagingService.Client/DependencyInjection/DependencyInjectionExtensions.cs
deleted file mode 100644
index bbeb71e..0000000
--- a/src/presentation/DigitalData.MessagingService.Client/DependencyInjection/DependencyInjectionExtensions.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-#if NET
-namespace DigitalData.MessagingService.Client.DependencyInjection;
-
-///
-///
-///
-public static class DependencyInjectionExtensions
-{
-}
-#endif
\ No newline at end of file
diff --git a/src/presentation/DigitalData.MessagingService.Client/DependencyInjection/MessagingServiceConfiguration.cs b/src/presentation/DigitalData.MessagingService.Client/DependencyInjection/MessagingServiceConfiguration.cs
deleted file mode 100644
index cd78a1b..0000000
--- a/src/presentation/DigitalData.MessagingService.Client/DependencyInjection/MessagingServiceConfiguration.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-#if NET
-namespace DigitalData.MessagingService.Client.DependencyInjection;
-
-///
-///
-///
-public class MessagingServiceConfiguration
-{
-}
-#endif
\ No newline at end of file
diff --git a/src/presentation/DigitalData.MessagingService.Client/DependencyInjectionExtensions.cs b/src/presentation/DigitalData.MessagingService.Client/DependencyInjectionExtensions.cs
new file mode 100644
index 0000000..1ab7182
--- /dev/null
+++ b/src/presentation/DigitalData.MessagingService.Client/DependencyInjectionExtensions.cs
@@ -0,0 +1,50 @@
+#if NET
+using DigitalData.MessagingService.Application.DependencyInjection;
+using DigitalData.MessagingService.Publisher;
+using DigitalData.MessagingService.RabbitMQ;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace DigitalData.MessagingService.Client.DependencyInjection;
+
+///
+///
+///
+public static class DependencyInjectionExtensions
+{
+ private static IServiceCollection AddMessagingServiceClientDefaults(this IServiceCollection services, string luckyPennySoftLicenseKey)
+ {
+ services.AddMessagingServiceApplication(luckyPennySoftLicenseKey);
+ return services.AddTransient();
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static IServiceCollection AddMessagingServiceClient(this IServiceCollection services, string luckyPennySoftLicenseKey, Action configureRabbitMqConnection)
+ {
+ services.AddMessagingServiceClientDefaults(luckyPennySoftLicenseKey);
+ services.AddMessagingServicePublisher(configureRabbitMqConnection);
+ return services;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static IServiceCollection AddMessagingServiceClient(this IServiceCollection services, string luckyPennySoftLicenseKey, IConfiguration configuration, string rabbitMqConnectionSectionName = RabbitMqConnectionConfiguration.SectionName)
+ {
+ services.AddMessagingServiceClientDefaults(luckyPennySoftLicenseKey);
+ services.AddMessagingServicePublisher(configuration, rabbitMqConnectionSectionName);
+ return services;
+ }
+}
+#endif
\ No newline at end of file
diff --git a/src/presentation/DigitalData.MessagingService.Client/Email.cs b/src/presentation/DigitalData.MessagingService.Client/Email.cs
new file mode 100644
index 0000000..68e48db
--- /dev/null
+++ b/src/presentation/DigitalData.MessagingService.Client/Email.cs
@@ -0,0 +1,34 @@
+#if NET
+namespace DigitalData.MessagingService.Client;
+
+///
+/// Represents an email to be sent via the messaging service.
+///
+public record Email
+{
+ ///
+ /// Sender email address.
+ ///
+ public required string From { get; init; }
+
+ ///
+ /// Email subject.
+ ///
+ public required string Subject { get; init; }
+
+ ///
+ /// Email body (HTML or plain text).
+ ///
+ public required string Body { get; init; }
+
+ ///
+ /// Indicates whether is HTML.
+ ///
+ public required bool IsHtml { get; init; }
+
+ ///
+ /// Recipient email addresses.
+ ///
+ public required List To { get; init; }
+}
+#endif
diff --git a/src/presentation/DigitalData.MessagingService.Client/MessagingServiceClient.cs b/src/presentation/DigitalData.MessagingService.Client/MessagingServiceClient.cs
new file mode 100644
index 0000000..82c634b
--- /dev/null
+++ b/src/presentation/DigitalData.MessagingService.Client/MessagingServiceClient.cs
@@ -0,0 +1,34 @@
+#if NET
+using DigitalData.MessagingService.Application.EmailAccounts.Queries;
+using DigitalData.MessagingService.Application.EmailSending.Commands;
+using MediatR;
+
+namespace DigitalData.MessagingService.Client;
+
+///
+///
+///
+public class MessagingServiceClient(ISender sender)
+{
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task SendAsync(Email email, CancellationToken cancellationToken = default)
+ {
+ await sender.Send(new PublishEmailViaSmtpCommand()
+ {
+ Sender = new GetEmailAccountQuery()
+ {
+ Username = email.From
+ },
+ Recipients = email.To,
+ Subject = email.Subject,
+ Body = email.Body,
+ IsHtml = email.IsHtml
+ }, cancellationToken);
+ }
+}
+#endif
\ No newline at end of file