public async Task SendEmailShouldWork()
        {
            // Assert
            var mockCategoriesService = new Mock <ICategoriesService>();
            var mockImagesService     = new Mock <IImagesService>();
            var mockPostsService      = new Mock <IPostsService>();
            var mockEmailSender       = new Mock <IEmailSender>();

            var inputModel = new EmailContactInputModel()
            {
                From     = "*****@*****.**",
                FromName = "goshkoBRAT",
                Message  = "gosho sum az",
                Subject  = "za mene staa vupros",
            };

            var controller = new HomeController(
                mockPostsService.Object,
                mockCategoriesService.Object,
                mockImagesService.Object,
                mockEmailSender.Object);

            // Act
            var result = await controller.SendEmailAsync(inputModel);

            // Assert
            var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Equal("Home", redirectToActionResult.ControllerName);
            Assert.Equal("Index", redirectToActionResult.ActionName);
        }
        public async Task <IActionResult> SendEmailAsync(EmailContactInputModel inputModel)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction("About", "Home"));
            }

            await this.emailSender.SendEmailAsync(inputModel.From, inputModel.FromName, GlobalConstants.SystemEmail, inputModel.Subject, inputModel.Message);

            return(this.RedirectToAction("Index", "Home"));
        }