public async Task <ReportMessage> CreateMessageAsync(AbstractReport reportData)
        {
            var msg = new MailMessage {
                IsBodyHtml = true
            };

            var mailAddressViewModel = new MailAddressViewModel(reportData, _logger);
            var recipients           = mailAddressViewModel.GetRecipientAdrresses();

            msg.From = mailAddressViewModel.From;
            msg.To.AddRange(recipients[RecipientType.TO]);
            msg.CC.AddRange(recipients[RecipientType.CC]);

            _logger.LogInformation("Sending mail for to address - " +
                                   string.Join(";", msg.To.Select(mailAddress => mailAddress.Address)));

            _logger.LogInformation("Sending mail for cc address - " +
                                   string.Join(";", msg.CC.Select(mailAddress => mailAddress.Address)));

            _logger.LogInformation("Creating view model for generating xml");
            var emailReportViewModel = new EmailReportViewModel(reportData, _emailReportConfiguration);

            _logger.LogInformation("Generated view model");

            msg.Subject = emailReportViewModel.EmailSubject;
            msg.Body    = GenerateBodyFromViewModel(emailReportViewModel);

            return(await Task.FromResult(new ReportMessage()
            {
                MailMessage = msg, SmtpConfiguration = reportData.SmtpConfiguration
            }));
        }