using System.Diagnostics.CodeAnalysis; using System.Text.Json; using MailKit.Net.Smtp; using MimeKit; namespace InnovEnergy.Lib.Mailer; public static class Mailer { [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] public static async Task Send(String recipientName, String recipientEmailAddress, String subject, String body) { var config = await ReadMailerConfig(); var from = new MailboxAddress(config!.SenderName, config.SenderAddress); var to = new MailboxAddress(recipientName, recipientEmailAddress); var msg = new MimeMessage { From = { from }, To = { to }, Subject = subject, Body = new TextPart { Text = body } }; using var smtp = new SmtpClient(); await smtp.ConnectAsync(config.SmtpServerUrl, config.SmtpPort, false); await smtp.AuthenticateAsync(config.SmtpUsername, config.SmtpPassword); await smtp.SendAsync(msg); await smtp.DisconnectAsync(true); } [RequiresUnreferencedCode("Calls System.Text.Json.JsonSerializer.DeserializeAsync(Stream, JsonSerializerOptions, CancellationToken)")] private static async Task ReadMailerConfig() { await using var fileStream = File.OpenRead(MailerConfig.DefaultFile); return await JsonSerializer.DeserializeAsync(fileStream); } }