Skip to content

Commit 38a1917

Browse files
committed
fix: SendEmail - fixed issue where standard MimeMessage-Headers were duplicated instead of overwritten when set in the request
1 parent 70092f7 commit 38a1917

File tree

3 files changed

+50
-11
lines changed

3 files changed

+50
-11
lines changed

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<Version>9.5.3</Version>
3+
<Version>9.5.4</Version>
44
<TargetFramework>net8.0</TargetFramework>
55
</PropertyGroup>
66

src/Email/src/SendEmail.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,6 @@ protected override async Task Handle(SendEmail request, CancellationToken cancel
5454
Subject = subject
5555
};
5656

57-
var headers = request.Headers ?? emailOptions.DefaultHeaders;
58-
59-
if (headers != null)
60-
{
61-
foreach (var (field, value) in headers)
62-
{
63-
message.Headers.Add(field, value);
64-
}
65-
}
66-
6757
if (!string.IsNullOrWhiteSpace(request.BccRecipient))
6858
{
6959
message.Bcc.Add(new MailboxAddress(request.BccRecipient, request.BccRecipient));
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Copyright (c) Fusonic GmbH. All rights reserved.
2+
// Licensed under the MIT License. See LICENSE file in the project root for license information.
3+
4+
using System.Globalization;
5+
using FluentAssertions;
6+
using Fusonic.Extensions.Email.Tests.Models;
7+
using MimeKit;
8+
using NSubstitute;
9+
using NSubstitute.ClearExtensions;
10+
using SimpleInjector;
11+
using Xunit;
12+
13+
namespace Fusonic.Extensions.Email.Tests;
14+
15+
public class SendEmailWithMockedClientTests : TestBase<SendEmailWithMockedClientTests.SendEmailFixture>
16+
{
17+
private readonly ISmtpClient smtpClient;
18+
19+
public SendEmailWithMockedClientTests(SendEmailFixture fixture) : base(fixture)
20+
{
21+
smtpClient = GetInstance<ISmtpClient>();
22+
smtpClient.ClearSubstitute();
23+
}
24+
25+
[Fact]
26+
public async Task SendEmail_StandardHeadersOverwritten()
27+
{
28+
await smtpClient.SendMailAsync(Arg.Do<MimeMessage>(ValidateEmail));
29+
30+
var model = new SendEmailTestEmailViewModel { SomeField = "Some field." };
31+
await SendAsync(new SendEmail("recipient@fusonic.net", "The Recipient", new CultureInfo("de-AT"), model, Headers: new Dictionary<string, string> { ["Message-Id"] = "value" }));
32+
33+
await smtpClient.Received(1).SendMailAsync(Arg.Any<MimeMessage>());
34+
35+
static void ValidateEmail(MimeMessage email)
36+
{
37+
email.Headers.Should().ContainSingle(s => s.Field.Equals("Message-Id", StringComparison.OrdinalIgnoreCase));
38+
email.Headers["Message-Id"].Should().Be("value");
39+
}
40+
}
41+
42+
public class SendEmailFixture : TestFixture
43+
{
44+
protected override void RegisterDependencies(Container container)
45+
{
46+
container.RegisterSingleton(() => Substitute.For<ISmtpClient>());
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)