public async Task <bool> SendMailAsync(MessageInput messageInput)
        {
            if (messageInput == null)
            {
                throw new ArgumentNullException(nameof(messageInput));
            }
            try
            {
                var template = await templateProvider.GetTemplateById(messageInput.EventId);

                if (template == null)
                {
                    return(false);
                }
                //TODO: rename data
                var htmlContent    = renderingService.Render(template.HtmlContent, messageInput.Data.Data);
                var subjectContent = renderingService.Render(template.Subject, messageInput.Data.Data);

                using (var message = new MailMessage())
                {
                    foreach (var emailAddress in messageInput.Data.To)
                    {
                        message.To.Add(emailAddress);
                    }

                    //foreach (var emailAddress in messageInput.Data.Bcc)
                    //{
                    //    message.To.Add(emailAddress);
                    //}

                    message.Subject = subjectContent;
                    message.Body    = htmlContent;
#if !DEBUG
                    using (var smtpClient = new SmtpClient())
                    {
                        await smtpClient.SendMailAsync(message);
                    }
#endif
                }
            }
            catch (Exception ex)
            {
                //TODO : Log exception
                //TODO : Move mail message to error queue
                return(false);
            }
            return(true);
        }