/// <summary> /// Sends the logs. /// </summary> /// <param name="logs">The logs.</param> private async void SendLogs([NotNull] IEnumerable <Log> logs) { try { Log[] timeOrdered = logs .OrderBy(l => l.TimeStamp) .ToArray(); Log[] levelOrdered = timeOrdered .OrderByDescending(l => l.Level) .ToArray(); string subject = _newLineRegex.Replace(Subject.ToString(GetSubjectResolver(levelOrdered)), m => " "); string bodyHtml = BodyHtml.ToString(GetBodyResolver(timeOrdered, true)); string bodyText = BodyPlainText?.ToString(GetBodyResolver(timeOrdered, false)); MailMessage message = new MailMessage { Subject = subject, Body = bodyHtml, IsBodyHtml = true, BodyEncoding = Encoding.UTF8 }; if (SenderAddress != null) { message.Sender = SenderAddress; } if (FromAddress != null) { message.From = FromAddress; } if (ToAddresses != null) { message.To.AddRange(ToAddresses); } if (CCAddresses != null) { message.CC.AddRange(CCAddresses); } if (BccAddresses != null) { message.Bcc.AddRange(BccAddresses); } if (bodyText != null) { message.AlternateViews.Add( AlternateView.CreateAlternateViewFromString(bodyText, Encoding.UTF8, "text/plain")); } SmtpClient smtpClient = _smtpClient; if (smtpClient == null) { return; } using (await _sendLock.LockAsync().ConfigureAwait(false)) { smtpClient = _smtpClient; if (smtpClient == null) { return; } // ReSharper disable once PossibleNullReferenceException await smtpClient.SendMailAsync(message).ConfigureAwait(false); } } catch (Exception e) { Log.Add(e, LoggingLevel.Error, () => Resources.EmailLogger_SendLogs_Error); } }