From b8883f1c926190f9e7d23d5cd2dac99f42e5a19d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Charria=20Mu=C3=B1oz?= Date: Wed, 15 Oct 2025 16:21:02 -0500 Subject: [PATCH] Refactor resource management in EmailService.cs Refactored the creation and disposal of `MimeMessage` and `SmtpClient` to use the modern `using var` syntax for improved readability and resource management. Updated file opening logic for attachments to use `File.Open` with specific `FileMode`, `FileAccess`, and `FileShare` options for better control over file access and sharing behavior. --- src/NETCore.MailKit/Core/EmailService.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/NETCore.MailKit/Core/EmailService.cs b/src/NETCore.MailKit/Core/EmailService.cs index f1efb3f..96ae278 100644 --- a/src/NETCore.MailKit/Core/EmailService.cs +++ b/src/NETCore.MailKit/Core/EmailService.cs @@ -224,7 +224,7 @@ private void SendEmail(string mailTo, string mailCc, string mailBcc, string subj Check.Argument.IsNotEmpty(_to, nameof(mailTo)); Check.Argument.IsNotEmpty(message, nameof(message)); - var mimeMessage = new MimeMessage(); + using var mimeMessage = new MimeMessage(); //add mail from if (!string.IsNullOrEmpty(sender?.SenderEmail) && !string.IsNullOrEmpty(sender?.SenderName)) @@ -285,7 +285,7 @@ private void SendEmail(string mailTo, string mailCc, string mailBcc, string subj multipartBody.Add(new MimePart(mimeType[0], mimeType[1]) { IsAttachment = true, - Content = new MimeContent(File.OpenRead(attach), ContentEncoding.Default), + Content = new MimeContent(File.Open(attach, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete), ContentEncoding.Default), ContentDisposition = new ContentDisposition(ContentDisposition.Attachment), ContentTransferEncoding = ContentEncoding.Base64, FileName = Path.GetFileName(attach), @@ -295,10 +295,8 @@ private void SendEmail(string mailTo, string mailCc, string mailBcc, string subj //set email body mimeMessage.Body = multipartBody; - using (var client = _MailKitProvider.SmtpClient) - { - client.Send(mimeMessage); - } + using var client = _MailKitProvider.SmtpClient; + client.Send(mimeMessage); } } }