diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Helpers/EmailSender.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Helpers/EmailSender.cs new file mode 100644 index 00000000..a17f3369 --- /dev/null +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Helpers/EmailSender.cs @@ -0,0 +1,38 @@ +using System.Net.Mail; +using System.Threading.Tasks; + +namespace O2NextGen.ESender.Api.Helpers +{ + public class EmailSender + { + public EmailSender() + { + SmtpServerHost = "localhost"; + SmtpServerPort = 25; + From="example@example.com"; + } + + public string From { get; set; } + + public int SmtpServerPort { get; set; } + + public string SmtpServerHost { get; set; } + + public async Task Send(string to, string subject, string bodyHtml) + { + using (var client = new SmtpClient()) + { + client.DeliveryMethod = SmtpDeliveryMethod.Network; + client.Host = SmtpServerHost; + client.Port = SmtpServerPort; + using (var message = new MailMessage(From, to)) + { + message.Subject = subject; + message.IsBodyHtml = true; + message.Body = bodyHtml; + await client.SendMailAsync(message).ConfigureAwait(false); + } + } + } + } +} \ No newline at end of file diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/IoC/ServiceCollectionExtensions.cs b/src/Services/e-sender/O2NextGen.ESender.Api/IoC/ServiceCollectionExtensions.cs new file mode 100644 index 00000000..44d9a11e --- /dev/null +++ b/src/Services/e-sender/O2NextGen.ESender.Api/IoC/ServiceCollectionExtensions.cs @@ -0,0 +1,25 @@ +using System; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace O2NextGen.ESender.Api.IoC +{ + public static class ServiceCollectionExtensions + { + // ReSharper disable once InconsistentNaming + public static TConfig ConfigurePOCO(this IServiceCollection services, IConfiguration configuration) + where TConfig : class, new() + { + if (services == null) + throw new ArgumentNullException(nameof(services)); + + if (configuration == null) + throw new ArgumentNullException(nameof(configuration)); + + var config = new TConfig(); + configuration.Bind(config); + services.AddSingleton(config); + return config; + } + } +} \ No newline at end of file diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Setup/SenderConfig.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Setup/SenderConfig.cs new file mode 100644 index 00000000..e5c9ca12 --- /dev/null +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Setup/SenderConfig.cs @@ -0,0 +1,9 @@ +namespace O2NextGen.ESender.Api.Setup +{ + public class SenderConfig + { + public string SmtpServerHost { get; set; } + public string SmtpServerPort { get; set; } + public string From { get; set; } + } +} \ No newline at end of file diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs b/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs index 805f5d5a..b459e2f5 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs +++ b/src/Services/e-sender/O2NextGen.ESender.Api/Startup.cs @@ -3,21 +3,24 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using O2NextGen.ESender.Api.IoC; +using O2NextGen.ESender.Api.Setup; namespace O2NextGen.ESender.Api { public class Startup { - public Startup(IConfiguration configuration) + public Startup(IConfiguration appConfiguration) { - Configuration = configuration; + AppConfiguration = appConfiguration; } - public IConfiguration Configuration { get; } + public IConfiguration AppConfiguration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); + services.ConfigurePOCO(AppConfiguration.GetSection("Sender")); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) diff --git a/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json b/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json index 013120d6..26ead046 100644 --- a/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json +++ b/src/Services/e-sender/O2NextGen.ESender.Api/appsettings.json @@ -4,6 +4,11 @@ "Default": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "Sender": { + "SmtpServerHost": "", + "SmtpServerPort": "", + "From": "" + } }