using Microsoft.Extensions.Options; namespace IOL.GreatOffice.Api.Services; public class MailService { private readonly ILogger _logger; private static string _emailHost; private static int _emailPort; private static string _emailUser; private static string _emailPassword; /// /// Provides methods to send email. /// /// /// public MailService(VaultService vaultService, ILogger logger) { var configuration = vaultService.GetCurrentAppConfiguration(); _logger = logger; _emailHost = configuration.SMTP_HOST; _emailPort = Convert.ToInt32(configuration.SMTP_PORT); _emailUser = configuration.SMTP_USER; _emailPassword = configuration.SMTP_PASSWORD; } /// /// Send an email. /// /// public void SendMail(MailMessage message) { using var smtpClient = new SmtpClient { Host = _emailHost, EnableSsl = _emailPort == 587, Port = _emailPort, Credentials = new NetworkCredential { UserName = _emailUser, Password = _emailPassword, } }; var configurationString = JsonSerializer.Serialize(new { Host = smtpClient.Host, EnableSsl = smtpClient.EnableSsl, Port = smtpClient.Port, UserName = _emailUser.HasValue() ? "**REDACTED**" : "**MISSING**", Password = _emailPassword.HasValue() ? "**REDACTED**" : "**MISSING**", }, new JsonSerializerOptions { WriteIndented = true }); _logger.LogDebug("SmtpClient was instansiated with the following configuration\n" + configurationString); smtpClient.Send(message); } }