Skip to content

Commit 12b0ccf

Browse files
committed
Email integration
1 parent 71ab119 commit 12b0ccf

File tree

14 files changed

+119
-18
lines changed

14 files changed

+119
-18
lines changed

OnionArchitecture/OA.Data/Migrations/20200627044955_Initial-setup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using System;
2-
using Microsoft.EntityFrameworkCore.Migrations;
1+
using Microsoft.EntityFrameworkCore.Migrations;
2+
using System;
33

44
namespace OA.Data.Migrations
55
{
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace OA.Domain
2+
{
3+
public class MailRequest
4+
{
5+
public string ToEmail { get; set; }
6+
public string Subject { get; set; }
7+
public string Body { get; set; }
8+
9+
}
10+
11+
public class MailSettings
12+
{
13+
public string Mail { get; set; }
14+
public string DisplayName { get; set; }
15+
public string Password { get; set; }
16+
public string Host { get; set; }
17+
public int Port { get; set; }
18+
}
19+
}

OnionArchitecture/OA.Infrastructure/Extension/ConfigureContainer.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder a
1010
app.UseMiddleware<CustomExceptionMiddleware>();
1111
}
1212

13-
1413
public static void ConfigureSwagger(this IApplicationBuilder app)
1514
{
1615
app.UseSwagger();

OnionArchitecture/OA.Infrastructure/Extension/ConfigureServiceContainer.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Microsoft.Extensions.Configuration;
44
using Microsoft.Extensions.DependencyInjection;
55
using OA.Data;
6+
using OA.Domain;
67
using OA.Infrastructure.Mapping;
78
using OA.Persistence.Contract;
89
using OA.Persistence.Repository;
@@ -43,6 +44,7 @@ public static void AddRepository(this IServiceCollection serviceCollection)
4344
public static void AddTransientServices(this IServiceCollection serviceCollection)
4445
{
4546
serviceCollection.AddTransient<ICustomerService, CustomerService>();
47+
serviceCollection.AddTransient<IMailService, MailService>();
4648
}
4749

4850
public static void AddSwaggerOpenAPI(this IServiceCollection serviceCollection)
@@ -76,5 +78,12 @@ public static void AddSwaggerOpenAPI(this IServiceCollection serviceCollection)
7678

7779
}
7880

81+
public static void AddMailSetting(this IServiceCollection serviceCollection,
82+
IConfiguration configuration)
83+
{
84+
serviceCollection.Configure<MailSettings>(configuration.GetSection("MailSettings"));
85+
}
86+
87+
7988
}
8089
}

OnionArchitecture/OA.Infrastructure/Middleware/CustomExceptionMiddleware.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.AspNetCore.Http;
22
using Microsoft.Extensions.Logging;
33
using Newtonsoft.Json;
4-
using Serilog;
54
using System;
65
using System.Net;
76
using System.Threading.Tasks;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using OA.Domain;
2+
using System.Threading.Tasks;
3+
4+
namespace OA.Service.Contract
5+
{
6+
public interface IMailService
7+
{
8+
Task SendEmailAsync(MailRequest mailRequest);
9+
10+
}
11+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using Microsoft.Extensions.Options;
2+
using OA.Domain;
3+
using OA.Service.Contract;
4+
using System.Net;
5+
using System.Net.Mail;
6+
using System.Threading.Tasks;
7+
8+
namespace OA.Service.Implementation
9+
{
10+
public class MailService : IMailService
11+
{
12+
private readonly MailSettings _mailSettings;
13+
public MailService(IOptions<MailSettings> mailSettings)
14+
{
15+
_mailSettings = mailSettings.Value;
16+
}
17+
18+
public async Task SendEmailAsync(MailRequest mailRequest)
19+
{
20+
MailMessage message = new MailMessage();
21+
SmtpClient smtp = new SmtpClient();
22+
message.From = new MailAddress(_mailSettings.Mail, _mailSettings.DisplayName);
23+
message.To.Add(new MailAddress(mailRequest.ToEmail));
24+
message.Subject = mailRequest.Subject;
25+
26+
message.IsBodyHtml = false;
27+
message.Body = mailRequest.Body;
28+
smtp.Port = _mailSettings.Port;
29+
smtp.Host = _mailSettings.Host;
30+
smtp.EnableSsl = true;
31+
smtp.UseDefaultCredentials = false;
32+
smtp.Credentials = new NetworkCredential(_mailSettings.Mail, _mailSettings.Password);
33+
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
34+
await smtp.SendMailAsync(message);
35+
}
36+
37+
}
38+
}

OnionArchitecture/OA.Test.Integration/ApiCustomerTest.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using NUnit.Framework;
2-
using OA.Test.Integration;
32
using System.Net;
43
using System.Net.Http;
54
using System.Threading.Tasks;

OnionArchitecture/OA.sln

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OA.Test.Integration", "OA.T
2121
EndProject
2222
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OATemplate", "OATemplate\OATemplate.csproj", "{A5926428-D707-4D5E-B785-82DFE8C5AC85}"
2323
EndProject
24-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OA.CrossCutting", "OA.CrossCutting\OA.CrossCutting.csproj", "{7841B774-DEC1-4F7C-B3B2-A1BA871759E7}"
25-
EndProject
2624
Global
2725
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2826
Debug|Any CPU = Debug|Any CPU
@@ -65,10 +63,6 @@ Global
6563
{A5926428-D707-4D5E-B785-82DFE8C5AC85}.Debug|Any CPU.Build.0 = Debug|Any CPU
6664
{A5926428-D707-4D5E-B785-82DFE8C5AC85}.Release|Any CPU.ActiveCfg = Release|Any CPU
6765
{A5926428-D707-4D5E-B785-82DFE8C5AC85}.Release|Any CPU.Build.0 = Release|Any CPU
68-
{7841B774-DEC1-4F7C-B3B2-A1BA871759E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
69-
{7841B774-DEC1-4F7C-B3B2-A1BA871759E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
70-
{7841B774-DEC1-4F7C-B3B2-A1BA871759E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
71-
{7841B774-DEC1-4F7C-B3B2-A1BA871759E7}.Release|Any CPU.Build.0 = Release|Any CPU
7266
EndGlobalSection
7367
GlobalSection(SolutionProperties) = preSolution
7468
HideSolutionNode = FALSE

OnionArchitecture/OA/Controllers/CustomerController.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
using AutoMapper;
2-
using Microsoft.AspNetCore.Http;
32
using Microsoft.AspNetCore.Mvc;
43
using OA.Domain.Entities;
54
using OA.Infrastructure.ViewModel;
65
using OA.Persistence.Contract;
76
using OA.Service.Contract;
8-
using System;
97
using System.Collections.Generic;
108
using System.Threading.Tasks;
119

0 commit comments

Comments
 (0)