Skip to content

Commit d88c8d7

Browse files
authored
Merge pull request #20 from leo-labs/log-noop-exception
Add additional debug logging when noop fails
2 parents 70fd6b8 + becd3c5 commit d88c8d7

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/MiddleMail.Delivery.Smtp/SmtpMimeMessageSender.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using MailKit;
66
using MailKit.Net.Smtp;
77
using MailKit.Security;
8+
using Microsoft.Extensions.Logging;
89
using Microsoft.Extensions.Options;
910
using MimeKit;
1011

@@ -21,10 +22,13 @@ public class SmtpMimeMessageSender : IMimeMessageSender, IDisposable {
2122
/// Since <see cref="MailKit.Net.Smtp.SmtpClient" /> is not thread safe, we synchronize access to it by a semaphoreSlim.
2223
private readonly SemaphoreSlim semaphoreSlim;
2324

24-
public SmtpMimeMessageSender(IOptions<SmtpOptions> smtpConfig) {
25+
private readonly ILogger<SmtpMimeMessageSender> logger;
26+
27+
public SmtpMimeMessageSender(IOptions<SmtpOptions> smtpConfig, ILogger<SmtpMimeMessageSender> logger) {
2528
this.options = smtpConfig.Value;
2629
this.smtpClient = new SmtpClient();
2730
this.semaphoreSlim = new SemaphoreSlim(initialCount: 1, maxCount: 1);
31+
this.logger = logger;
2832
}
2933

3034
private async Task connectAsync() {
@@ -54,6 +58,7 @@ public async Task SendAsync(MimeMessage message) {
5458
try {
5559
await smtpClient.NoOpAsync();
5660
} catch (Exception e) when (e is SmtpProtocolException | e is IOException | e is SmtpCommandException) {
61+
logger.LogError(e, "Exception when sending SMTP NOOP command");
5762
await this.connectAsync();
5863
}
5964
await smtpClient.SendAsync(message);

tests/Delivery/SmtpMimeMessageSenderTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using MailKit.Security;
1414
using MiddleMail.Delivery.Smtp;
1515
using Microsoft.Extensions.Options;
16+
using Microsoft.Extensions.Logging.Abstractions;
1617

1718
namespace MiddleMail.Tests.Delivery {
1819

@@ -36,7 +37,8 @@ public SmtpMimeMessageSenderTests() {
3637
Password = "pa$$word",
3738
};
3839

39-
smtpSender = new SmtpMimeMessageSender(Options.Create(options));
40+
var logger = new NullLogger<SmtpMimeMessageSender>();
41+
smtpSender = new SmtpMimeMessageSender(Options.Create(options), logger);
4042
startServer();
4143
}
4244

0 commit comments

Comments
 (0)