Skip to content

Commit

Permalink
add email service
Browse files Browse the repository at this point in the history
  • Loading branch information
emrecoskun705 committed Sep 11, 2023
1 parent ff9e9d6 commit 6f6eb1b
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 2 deletions.
8 changes: 8 additions & 0 deletions Unitagram.Application/Contracts/Email/IEmailSender.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Unitagram.Application.Models.Email;

namespace Unitagram.Application.Contracts.Email;

public interface IEmailSender
{
Task<bool> SendEmail(EmailMessage email);
}
8 changes: 8 additions & 0 deletions Unitagram.Application/Models/Email/EmailMessage.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Unitagram.Application.Models.Email;

public record EmailMessage
{
public string To { get; init; } = string.Empty;
public string Subject { get; init; } = string.Empty;
public string Body { get; init; } = string.Empty;
}
9 changes: 9 additions & 0 deletions Unitagram.Application/Models/Email/EmailSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Unitagram.Application.Models.Email;

public record EmailSettings()
{
public string SmtpServer { get; init; } = string.Empty;
public int SmtpPort { get; init; }
public string Email { get; init; } = string.Empty;
public string Password { get; init; } = string.Empty;
}
9 changes: 9 additions & 0 deletions Unitagram.Application/Unitagram.Application.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UserSecretsId>33D56772-14E9-426F-9754-5334A96CF6D3</UserSecretsId>
</PropertyGroup>


Expand Down Expand Up @@ -39,6 +40,14 @@














Expand Down
47 changes: 47 additions & 0 deletions Unitagram.Infrastructure/EmailService/EmailSender.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System.Net;
using System.Net.Mail;
using Microsoft.Extensions.Options;
using Unitagram.Application.Contracts.Email;
using Unitagram.Application.Contracts.Logging;
using Unitagram.Application.Models.Email;

namespace Unitagram.Infrastructure.EmailService;

public class EmailSender : IEmailSender
{
private readonly EmailSettings _emailSettings;
private readonly IAppLogger<EmailSender> _appLogger;

public EmailSender(IOptions<EmailSettings> emailSettings, IAppLogger<EmailSender> appLogger)
{
_appLogger = appLogger;
_emailSettings = emailSettings.Value;
}


public Task<bool> SendEmail(EmailMessage emailMessage)
{
try
{
using (SmtpClient smtpClient = new SmtpClient(_emailSettings.SmtpServer, _emailSettings.SmtpPort))
{
smtpClient.Credentials = new NetworkCredential(_emailSettings.Email, _emailSettings.Password);
smtpClient.EnableSsl = true; // Enable SSL encryption

MailMessage mail = new MailMessage();
mail.From = new MailAddress(_emailSettings.Email);
mail.To.Add(emailMessage.To);
mail.Subject = emailMessage.Subject;
mail.Body = emailMessage.Body;

smtpClient.Send(mail);
return Task.FromResult(true);
}
}
catch (Exception ex)
{
_appLogger.LogError("EmailError", ex);
return Task.FromResult(false);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Unitagram.Application.Contracts.Email;
using Unitagram.Application.Contracts.Logging;
using Unitagram.Application.Models.Email;
using Unitagram.Infrastructure.EmailService;
using Unitagram.Infrastructure.Logging;

namespace Unitagram.Infrastructure;
Expand All @@ -9,7 +12,9 @@ public static class InfrastructureServicesRegistration
{
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration)
{
services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
services.AddScoped(typeof(IAppLogger<>), typeof(LoggerAdapter<>));
services.AddTransient<IEmailSender, EmailSender>();
return services;
}
}
1 change: 1 addition & 0 deletions Unitagram.Infrastructure/Unitagram.Infrastructure.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="7.0.0" />
</ItemGroup>


</Project>
3 changes: 2 additions & 1 deletion Unitagram.WebAPI/Unitagram.WebAPI.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
Expand All @@ -7,6 +7,7 @@
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<DocumentationFile>api.xml</DocumentationFile>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<UserSecretsId>80c0d955-c54a-4767-bb71-481b5e067bcc</UserSecretsId>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion Unitagram.WebAPI/api.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6f6eb1b

Please sign in to comment.