diff --git a/src/Senders/FluentEmail.Mailgun/FluentEmail.Mailgun.csproj b/src/Senders/FluentEmail.Mailgun/FluentEmail.Mailgun.csproj
index 2ad7eff6..03dcd2d9 100644
--- a/src/Senders/FluentEmail.Mailgun/FluentEmail.Mailgun.csproj
+++ b/src/Senders/FluentEmail.Mailgun/FluentEmail.Mailgun.csproj
@@ -8,6 +8,7 @@
+
diff --git a/src/Senders/FluentEmail.Mailgun/FluentEmailMailgunBuilderExtensions.cs b/src/Senders/FluentEmail.Mailgun/FluentEmailMailgunBuilderExtensions.cs
index 69762e6d..14a13ddc 100644
--- a/src/Senders/FluentEmail.Mailgun/FluentEmailMailgunBuilderExtensions.cs
+++ b/src/Senders/FluentEmail.Mailgun/FluentEmailMailgunBuilderExtensions.cs
@@ -1,4 +1,8 @@
-using FluentEmail.Core.Interfaces;
+using System;
+using System.Net.Http.Headers;
+using System.Net.Http;
+using System.Text;
+using FluentEmail.Core.Interfaces;
using FluentEmail.Mailgun;
using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -8,7 +12,28 @@ public static class FluentEmailMailgunBuilderExtensions
{
public static FluentEmailServicesBuilder AddMailGunSender(this FluentEmailServicesBuilder builder, string domainName, string apiKey, MailGunRegion mailGunRegion = MailGunRegion.USA)
{
- builder.Services.TryAdd(ServiceDescriptor.Scoped(_ => new MailgunSender(domainName, apiKey, mailGunRegion)));
+ builder.Services.AddHttpClient(nameof(MailgunSender),
+ client =>
+ {
+ string url = string.Empty;
+ switch (mailGunRegion)
+ {
+ case MailGunRegion.USA:
+ url = $"https://api.mailgun.net/v3/{domainName}/";
+ break;
+ case MailGunRegion.EU:
+ url = $"https://api.eu.mailgun.net/v3/{domainName}/";
+ break;
+
+ default:
+ throw new ArgumentException($"'{mailGunRegion}' is not a valid value for {nameof(mailGunRegion)}");
+ }
+
+ client.BaseAddress = new Uri(url);
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"api:{apiKey}")));
+ });
+
+ builder.Services.TryAdd(ServiceDescriptor.Scoped());
return builder;
}
}
diff --git a/src/Senders/FluentEmail.Mailgun/MailgunSender.cs b/src/Senders/FluentEmail.Mailgun/MailgunSender.cs
index c1f3f359..0698e44b 100644
--- a/src/Senders/FluentEmail.Mailgun/MailgunSender.cs
+++ b/src/Senders/FluentEmail.Mailgun/MailgunSender.cs
@@ -1,9 +1,6 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
using System.Threading;
using System.Threading.Tasks;
using FluentEmail.Core;
@@ -15,33 +12,11 @@ namespace FluentEmail.Mailgun
{
public class MailgunSender : ISender
{
- private readonly string _apiKey;
- private readonly string _domainName;
- private HttpClient _httpClient;
+ private readonly HttpClient _httpClient;
- public MailgunSender(string domainName, string apiKey, MailGunRegion mailGunRegion = MailGunRegion.USA)
- {
- _domainName = domainName;
- _apiKey = apiKey;
- string url = string.Empty;
- switch(mailGunRegion)
- {
- case MailGunRegion.USA:
- url = $"https://api.mailgun.net/v3/{_domainName}/";
- break;
- case MailGunRegion.EU:
- url = $"https://api.eu.mailgun.net/v3/{_domainName}/";
- break;
-
- default:
- throw new ArgumentException($"'{mailGunRegion}' is not a valid value for {nameof(mailGunRegion)}");
- }
- _httpClient = new HttpClient
- {
- BaseAddress = new Uri(url)
- };
-
- _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"api:{_apiKey}")));
+ public MailgunSender(IHttpClientFactory httpClientfactory)
+ {
+ _httpClient = httpClientfactory.CreateClient(nameof(MailgunSender));
}
public SendResponse Send(IFluentEmail email, CancellationToken? token = null)
diff --git a/test/FluentEmail.Core.Tests/FluentEmail.Core.Tests.csproj b/test/FluentEmail.Core.Tests/FluentEmail.Core.Tests.csproj
index cc26ca67..62da9162 100644
--- a/test/FluentEmail.Core.Tests/FluentEmail.Core.Tests.csproj
+++ b/test/FluentEmail.Core.Tests/FluentEmail.Core.Tests.csproj
@@ -14,6 +14,7 @@
+
diff --git a/test/FluentEmail.Core.Tests/MailgunSenderTests.cs b/test/FluentEmail.Core.Tests/MailgunSenderTests.cs
index 40cb8bf9..18d3763b 100644
--- a/test/FluentEmail.Core.Tests/MailgunSenderTests.cs
+++ b/test/FluentEmail.Core.Tests/MailgunSenderTests.cs
@@ -4,6 +4,8 @@
using FluentEmail.Core.Models;
using NUnit.Framework;
using Newtonsoft.Json;
+using System.Net.Http;
+using Moq;
namespace FluentEmail.Mailgun.Tests
{
@@ -17,7 +19,7 @@ public class MailgunSenderTests
[SetUp]
public void SetUp()
{
- var sender = new MailgunSender("sandboxcf5f41bbf2f84f15a386c60e253b5fe9.mailgun.org", "key-8d32c046d7f14ada8d5ba8253e3e30de");
+ var sender = new MailgunSender(Mock.Of());
Email.DefaultSender = sender;
}