From 91be8a7ddf2b7c6ff18f5977fa5d257e5531b497 Mon Sep 17 00:00:00 2001 From: Corstian Boerman Date: Mon, 15 Feb 2021 11:55:01 +0100 Subject: [PATCH 1/7] Create a new abstractions package Most important changes as of now; 1. BodyBuilder on the MailBase is public get only instead of protected internal. 2. Skyhop.Mail.Abstractions package contains the MailBase class, which is still in the Skyhop.Mail namespace to prevent breaking too much things. 3. Two packages are now generated instead of one. --- Skyhop.Mail.sln | 7 +++++ .../IMailSender.cs | 0 .../IMessageContent.cs | 0 .../IMessageSenderInfo.cs | 0 .../IModelIdentifierLister.cs | 0 .../MailBase.cs | 2 +- .../PackageDetails.props | 27 +++++++++++++++++++ .../Skyhop.Mail.Abstractions.csproj | 11 ++++++++ src/Skyhop.Mail/PackageDetails.props | 4 +-- src/Skyhop.Mail/Skyhop.Mail.csproj | 4 +++ 10 files changed, 52 insertions(+), 3 deletions(-) rename src/{Skyhop.Mail/Abstractions => Skyhop.Mail.Abstractions}/IMailSender.cs (100%) rename src/{Skyhop.Mail/Abstractions => Skyhop.Mail.Abstractions}/IMessageContent.cs (100%) rename src/{Skyhop.Mail/Abstractions => Skyhop.Mail.Abstractions}/IMessageSenderInfo.cs (100%) rename src/{Skyhop.Mail/Abstractions => Skyhop.Mail.Abstractions}/IModelIdentifierLister.cs (100%) rename src/{Skyhop.Mail => Skyhop.Mail.Abstractions}/MailBase.cs (97%) create mode 100644 src/Skyhop.Mail.Abstractions/PackageDetails.props create mode 100644 src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj diff --git a/Skyhop.Mail.sln b/Skyhop.Mail.sln index 3f8da6e..a866939 100644 --- a/Skyhop.Mail.sln +++ b/Skyhop.Mail.sln @@ -38,6 +38,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Templates", "samples EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skyhop.Mail", "src\Skyhop.Mail\Skyhop.Mail.csproj", "{23BAD21E-79CB-4665-AD95-EDC0B2449C58}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Skyhop.Mail.Abstractions", "src\Skyhop.Mail.Abstractions\Skyhop.Mail.Abstractions.csproj", "{1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -56,6 +58,10 @@ Global {23BAD21E-79CB-4665-AD95-EDC0B2449C58}.Debug|Any CPU.Build.0 = Debug|Any CPU {23BAD21E-79CB-4665-AD95-EDC0B2449C58}.Release|Any CPU.ActiveCfg = Release|Any CPU {23BAD21E-79CB-4665-AD95-EDC0B2449C58}.Release|Any CPU.Build.0 = Release|Any CPU + {1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -67,6 +73,7 @@ Global {B20B9859-B36F-4C12-8AEE-2E4631E6E477} = {421325E9-9344-43DD-962E-D1FE890F7E8D} {EDF5D8A1-8DBA-43C6-BD58-4A2933E8A985} = {421325E9-9344-43DD-962E-D1FE890F7E8D} {23BAD21E-79CB-4665-AD95-EDC0B2449C58} = {B03343F8-EE4C-4386-90BF-94225E44D24C} + {1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6} = {B03343F8-EE4C-4386-90BF-94225E44D24C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {02451752-289A-4A52-9BBF-1BCB4C640289} diff --git a/src/Skyhop.Mail/Abstractions/IMailSender.cs b/src/Skyhop.Mail.Abstractions/IMailSender.cs similarity index 100% rename from src/Skyhop.Mail/Abstractions/IMailSender.cs rename to src/Skyhop.Mail.Abstractions/IMailSender.cs diff --git a/src/Skyhop.Mail/Abstractions/IMessageContent.cs b/src/Skyhop.Mail.Abstractions/IMessageContent.cs similarity index 100% rename from src/Skyhop.Mail/Abstractions/IMessageContent.cs rename to src/Skyhop.Mail.Abstractions/IMessageContent.cs diff --git a/src/Skyhop.Mail/Abstractions/IMessageSenderInfo.cs b/src/Skyhop.Mail.Abstractions/IMessageSenderInfo.cs similarity index 100% rename from src/Skyhop.Mail/Abstractions/IMessageSenderInfo.cs rename to src/Skyhop.Mail.Abstractions/IMessageSenderInfo.cs diff --git a/src/Skyhop.Mail/Abstractions/IModelIdentifierLister.cs b/src/Skyhop.Mail.Abstractions/IModelIdentifierLister.cs similarity index 100% rename from src/Skyhop.Mail/Abstractions/IModelIdentifierLister.cs rename to src/Skyhop.Mail.Abstractions/IModelIdentifierLister.cs diff --git a/src/Skyhop.Mail/MailBase.cs b/src/Skyhop.Mail.Abstractions/MailBase.cs similarity index 97% rename from src/Skyhop.Mail/MailBase.cs rename to src/Skyhop.Mail.Abstractions/MailBase.cs index 4b333d5..d6bfab0 100644 --- a/src/Skyhop.Mail/MailBase.cs +++ b/src/Skyhop.Mail.Abstractions/MailBase.cs @@ -61,7 +61,7 @@ public AttachmentCollection LinkedResources /// /// The body builder used for the , , Html body and text body of the message. /// - protected internal BodyBuilder BodyBuilder { get; } + public BodyBuilder BodyBuilder { get; } /// /// A transform that can be used to update message headers and/or content before sending the message. diff --git a/src/Skyhop.Mail.Abstractions/PackageDetails.props b/src/Skyhop.Mail.Abstractions/PackageDetails.props new file mode 100644 index 0000000..2753a74 --- /dev/null +++ b/src/Skyhop.Mail.Abstractions/PackageDetails.props @@ -0,0 +1,27 @@ + + + + + true + true + + + + 3.0.0-rc5 + 0.0.1 + $(PackageVersion) + + true + Apache-2.0 + mail razor + Skyhop.Mail.Abstractions + $(Title) + A library smoothing email generation from .NET code, by enforcing a strong boundary between the template, and code rendering the template. + https://github.com/skyhop/Mail + https://github.com/skyhop/Mail + + - Split the interfaces and base classes into different packages + + + + \ No newline at end of file diff --git a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj new file mode 100644 index 0000000..e32c259 --- /dev/null +++ b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/src/Skyhop.Mail/PackageDetails.props b/src/Skyhop.Mail/PackageDetails.props index de9e2b6..da2a775 100644 --- a/src/Skyhop.Mail/PackageDetails.props +++ b/src/Skyhop.Mail/PackageDetails.props @@ -7,7 +7,7 @@ - 3.0.0-rc4 + 3.0.0-rc5 0.0.1 $(PackageVersion) @@ -20,7 +20,7 @@ https://github.com/skyhop/Mail https://github.com/skyhop/Mail - - Added transformations to edit the message content and senderinfo + - Split the interfaces and base classes into different packages diff --git a/src/Skyhop.Mail/Skyhop.Mail.csproj b/src/Skyhop.Mail/Skyhop.Mail.csproj index 56aa5e3..0a06c7c 100644 --- a/src/Skyhop.Mail/Skyhop.Mail.csproj +++ b/src/Skyhop.Mail/Skyhop.Mail.csproj @@ -8,5 +8,9 @@ + + + + From 41a3a99750e28cb560683eac7270c09a5da5220e Mon Sep 17 00:00:00 2001 From: Corstian Boerman Date: Mon, 15 Feb 2021 12:21:05 +0100 Subject: [PATCH 2/7] Add the IMailDispatcher interface --- .../IMailDispatcher.cs | 40 +++++++++++++++++++ src/Skyhop.Mail/MailDispatcher.cs | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/Skyhop.Mail.Abstractions/IMailDispatcher.cs diff --git a/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs b/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs new file mode 100644 index 0000000..3161c93 --- /dev/null +++ b/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs @@ -0,0 +1,40 @@ +using MimeKit; +using System; +using System.Threading.Tasks; + +namespace Skyhop.Mail.Abstractions +{ + /// + /// Interface to a class used to generate and send emails + /// + public interface IMailDispatcher + { + /// + /// Sends the email + /// + /// The type of the model carrying the payload of the mail. + /// The message payload + /// The addresses to which the mail must be sent + /// The addresses to which the mail must be cc'ed. + /// The addresses to which the mail must be bcc'ed. + /// The addresses from which the mail is sent, can be null, but then a DefaultFromAddress in must be set. + /// An awaitable which represents this method call. + public Task SendMail( + T data, + MailboxAddress[] to, + MailboxAddress[]? cc = default, + MailboxAddress[]? bcc = default, + MailboxAddress? from = default) where T : MailBase; + + /// + /// Sends the email + /// + /// The type of the model carrying the payload of the mail. + /// The message payload + /// An async action that can be used to set the different properties on the . The To and From properties must be set. + /// An awaitable which represents this method call. + public Task SendMail( + T data, + Func senderTransformation) where T : MailBase; + } +} diff --git a/src/Skyhop.Mail/MailDispatcher.cs b/src/Skyhop.Mail/MailDispatcher.cs index ed725cc..666a5d0 100644 --- a/src/Skyhop.Mail/MailDispatcher.cs +++ b/src/Skyhop.Mail/MailDispatcher.cs @@ -14,7 +14,7 @@ namespace Skyhop.Mail /// /// Class used to generate and send emails /// - public class MailDispatcher + public class MailDispatcher : IMailDispatcher { private readonly RazorViewToStringRenderer _renderer; private readonly MailDispatcherOptions _options; From b1e744c98958e8436c8951358b9744c44f3b9489 Mon Sep 17 00:00:00 2001 From: Corstian Boerman Date: Mon, 15 Feb 2021 15:33:40 +0100 Subject: [PATCH 3/7] Make the solution build properly :) --- src/Skyhop.Mail.Abstractions/IMailDispatcher.cs | 2 +- src/Skyhop.Mail.Abstractions/MailBase.cs | 2 +- src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs b/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs index 3161c93..f29601c 100644 --- a/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs +++ b/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs @@ -17,7 +17,7 @@ public interface IMailDispatcher /// The addresses to which the mail must be sent /// The addresses to which the mail must be cc'ed. /// The addresses to which the mail must be bcc'ed. - /// The addresses from which the mail is sent, can be null, but then a DefaultFromAddress in must be set. + /// The addresses from which the mail is sent, can be null. /// An awaitable which represents this method call. public Task SendMail( T data, diff --git a/src/Skyhop.Mail.Abstractions/MailBase.cs b/src/Skyhop.Mail.Abstractions/MailBase.cs index d6bfab0..c4dc4f0 100644 --- a/src/Skyhop.Mail.Abstractions/MailBase.cs +++ b/src/Skyhop.Mail.Abstractions/MailBase.cs @@ -6,7 +6,7 @@ namespace Skyhop.Mail { /// - /// Base class for all view-models for the views + /// Base class for all view-models for the views /// public class MailBase { diff --git a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj index e32c259..6f53ae1 100644 --- a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj +++ b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj @@ -1,5 +1,7 @@ + + netstandard2.0 From 82a46f19bb808c49e62483b032f3b118d93a6a7a Mon Sep 17 00:00:00 2001 From: Corstian Boerman Date: Tue, 16 Feb 2021 14:41:35 +0100 Subject: [PATCH 4/7] Breaking change; register the MailDispatcher as IMailDispatcher with the dependency container --- src/Skyhop.Mail/Extensions/IServiceCollectionExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Skyhop.Mail/Extensions/IServiceCollectionExtensions.cs b/src/Skyhop.Mail/Extensions/IServiceCollectionExtensions.cs index 67cf26a..b250c24 100644 --- a/src/Skyhop.Mail/Extensions/IServiceCollectionExtensions.cs +++ b/src/Skyhop.Mail/Extensions/IServiceCollectionExtensions.cs @@ -26,7 +26,7 @@ public static IServiceCollection AddMailDispatcher(this IServiceCollection servi // Renderer + internal dependencies serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); - serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); serviceCollection.Configure(mailDispatcherOptionsBuilder ?? (_ => { } )); // Try add if not already added needed Razor dependencies From 2d650e6aa5d43badf86c70fce4e45227779b45cc Mon Sep 17 00:00:00 2001 From: Corstian Boerman Date: Wed, 17 Feb 2021 11:35:23 +0100 Subject: [PATCH 5/7] Resolve review issues --- Skyhop.Mail.sln | 2 +- src/Directory.Build.props | 2 +- .../IMailDispatcher.cs | 4 ++-- .../Skyhop.Mail.Abstractions.csproj | 4 ---- src/Skyhop.Mail/MailDispatcher.cs | 23 +++---------------- 5 files changed, 7 insertions(+), 28 deletions(-) diff --git a/Skyhop.Mail.sln b/Skyhop.Mail.sln index a866939..75cff2b 100644 --- a/Skyhop.Mail.sln +++ b/Skyhop.Mail.sln @@ -38,7 +38,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sample.Templates", "samples EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skyhop.Mail", "src\Skyhop.Mail\Skyhop.Mail.csproj", "{23BAD21E-79CB-4665-AD95-EDC0B2449C58}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Skyhop.Mail.Abstractions", "src\Skyhop.Mail.Abstractions\Skyhop.Mail.Abstractions.csproj", "{1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Skyhop.Mail.Abstractions", "src\Skyhop.Mail.Abstractions\Skyhop.Mail.Abstractions.csproj", "{1F4A7C5A-53F6-441B-ADAC-E880AB4CA3B6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 5e7dafd..d099888 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,7 +2,7 @@ - netcoreapp3.1 + netcoreapp3.1;net5.0 diff --git a/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs b/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs index f29601c..593b21b 100644 --- a/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs +++ b/src/Skyhop.Mail.Abstractions/IMailDispatcher.cs @@ -34,7 +34,7 @@ public Task SendMail( /// An async action that can be used to set the different properties on the . The To and From properties must be set. /// An awaitable which represents this method call. public Task SendMail( - T data, - Func senderTransformation) where T : MailBase; + T data, Func senderTransformation) + where T : MailBase; } } diff --git a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj index 6f53ae1..e484053 100644 --- a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj +++ b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj @@ -2,10 +2,6 @@ - - netstandard2.0 - - diff --git a/src/Skyhop.Mail/MailDispatcher.cs b/src/Skyhop.Mail/MailDispatcher.cs index 666a5d0..6a34dfb 100644 --- a/src/Skyhop.Mail/MailDispatcher.cs +++ b/src/Skyhop.Mail/MailDispatcher.cs @@ -11,9 +11,7 @@ namespace Skyhop.Mail { - /// - /// Class used to generate and send emails - /// + /// public class MailDispatcher : IMailDispatcher { private readonly RazorViewToStringRenderer _renderer; @@ -33,16 +31,7 @@ public MailDispatcher(RazorViewToStringRenderer renderer, IOptions - /// Sends the email - /// - /// The type of the model carrying the payload of the mail. - /// The message payload - /// The addresses to which the mail must be sent - /// The addresses to which the mail must be cc'ed. - /// The addresses to which the mail must be bcc'ed. - /// The addresses from which the mail is sent, can be null, but then a DefaultFromAddress in must be set. - /// An awaitable which represents this method call. + /// public Task SendMail( T data, MailboxAddress[] to, @@ -69,13 +58,7 @@ public Task SendMail( return SendMail(data, senderTransform); } - /// - /// Sends the email - /// - /// The type of the model carrying the payload of the mail. - /// The message payload - /// An async action that can be used to set the different properties on the . The To and From properties must be set. - /// An awaitable which represents this method call. + /// public async Task SendMail(T data, Func senderTransformation) where T : MailBase { From c9576734a010733bbe4ffa88b5d99fec12fdc6f0 Mon Sep 17 00:00:00 2001 From: Corstian Boerman Date: Wed, 17 Feb 2021 11:42:19 +0100 Subject: [PATCH 6/7] Added another package config shared across projects, and a version bump --- Skyhop.Mail.sln | 1 + src/PackageDetails.props | 25 +++++++++++++++++++ .../PackageDetails.props | 15 ----------- .../Skyhop.Mail.Abstractions.csproj | 1 + src/Skyhop.Mail/PackageDetails.props | 16 ------------ src/Skyhop.Mail/Skyhop.Mail.csproj | 1 + 6 files changed, 28 insertions(+), 31 deletions(-) create mode 100644 src/PackageDetails.props diff --git a/Skyhop.Mail.sln b/Skyhop.Mail.sln index 75cff2b..5c7624e 100644 --- a/Skyhop.Mail.sln +++ b/Skyhop.Mail.sln @@ -24,6 +24,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B03343F8-EE4 ProjectSection(SolutionItems) = preProject src\Directory.Build.props = src\Directory.Build.props src\Directory.Build.targets = src\Directory.Build.targets + src\PackageDetails.props = src\PackageDetails.props EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{923EB0D6-45A2-4E56-9979-E80FAF9EDE75}" diff --git a/src/PackageDetails.props b/src/PackageDetails.props new file mode 100644 index 0000000..9009dfb --- /dev/null +++ b/src/PackageDetails.props @@ -0,0 +1,25 @@ + + + + + true + true + + + + 3.0.0-rc6 + 0.0.1 + $(PackageVersion) + + true + Apache-2.0 + mail razor + A library smoothing email generation from .NET code, by enforcing a strong boundary between the template, and code rendering the template. + https://github.com/skyhop/Mail + https://github.com/skyhop/Mail + + - Split the interfaces and base classes into different packages + + + + \ No newline at end of file diff --git a/src/Skyhop.Mail.Abstractions/PackageDetails.props b/src/Skyhop.Mail.Abstractions/PackageDetails.props index 2753a74..83451b5 100644 --- a/src/Skyhop.Mail.Abstractions/PackageDetails.props +++ b/src/Skyhop.Mail.Abstractions/PackageDetails.props @@ -1,24 +1,9 @@ - - - true - true - - 3.0.0-rc5 - 0.0.1 - $(PackageVersion) - - true - Apache-2.0 - mail razor Skyhop.Mail.Abstractions $(Title) - A library smoothing email generation from .NET code, by enforcing a strong boundary between the template, and code rendering the template. - https://github.com/skyhop/Mail - https://github.com/skyhop/Mail - Split the interfaces and base classes into different packages diff --git a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj index e484053..a1b48ae 100644 --- a/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj +++ b/src/Skyhop.Mail.Abstractions/Skyhop.Mail.Abstractions.csproj @@ -1,6 +1,7 @@ + diff --git a/src/Skyhop.Mail/PackageDetails.props b/src/Skyhop.Mail/PackageDetails.props index da2a775..2b1aa68 100644 --- a/src/Skyhop.Mail/PackageDetails.props +++ b/src/Skyhop.Mail/PackageDetails.props @@ -1,27 +1,11 @@ - - true - true - - - - 3.0.0-rc5 - 0.0.1 - $(PackageVersion) - - true - Apache-2.0 - mail razor Skyhop.Mail $(Title) A library smoothing email generation from .NET code, by enforcing a strong boundary between the template, and code rendering the template. - https://github.com/skyhop/Mail - https://github.com/skyhop/Mail - Split the interfaces and base classes into different packages - \ No newline at end of file diff --git a/src/Skyhop.Mail/Skyhop.Mail.csproj b/src/Skyhop.Mail/Skyhop.Mail.csproj index 0a06c7c..a474be5 100644 --- a/src/Skyhop.Mail/Skyhop.Mail.csproj +++ b/src/Skyhop.Mail/Skyhop.Mail.csproj @@ -1,6 +1,7 @@ + From fc4f7db1ba750dcf8af681e2124e678b5b0e981e Mon Sep 17 00:00:00 2001 From: Gerard Gunnewijk Date: Wed, 17 Feb 2021 11:58:28 +0100 Subject: [PATCH 7/7] Added conditional references #notTested --- src/Skyhop.Mail/Skyhop.Mail.csproj | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Skyhop.Mail/Skyhop.Mail.csproj b/src/Skyhop.Mail/Skyhop.Mail.csproj index a474be5..b0c8023 100644 --- a/src/Skyhop.Mail/Skyhop.Mail.csproj +++ b/src/Skyhop.Mail/Skyhop.Mail.csproj @@ -6,10 +6,17 @@ - + + + + + + + +