private static async Task SendEmailAsync(SiteMap.Site siteInfo, IEmailService _emailService, SiteUserDbModel friendUserDb, ApplicationUser userDb, IList <Element> elements, string siteId)
        {
            var model = new MailInvitation()
            {
                UserNameSender = userDb.FullName,
                UserName       = friendUserDb.FullName,
                SiteName       = siteInfo.Name,
                SiteUrl        = siteInfo.Url,
            };

            var title = FreeBusinessModule.GetTitle(elements);

            var identityMessage = new MailMessage();

            identityMessage.Subject = new StringTemplateRenderer().Render(title, model);

            var bodyTemplate = new StringBuilder();

            foreach (var element in elements)
            {
                bodyTemplate.Append("<div>");
                if (element.Type == "p")
                {
                    bodyTemplate.Append(element.Data);
                }
                else if (element.Type == "hr")
                {
                    bodyTemplate.Append("<hr />");
                }
                else if (SaveFreeCommand.IsFileElementType(element.Type))
                {
                    var files = JsonConvert.DeserializeObject <List <DataFileInput> >(element.Data);
                    foreach (var dataFile in files)
                    {
                        var uri =
                            $@"{siteInfo.Url}/api/file/get/{siteId}/{dataFile.Id}/{"ImageThumb"}/{UrlHelper
                                .NormalizeTextForUrl(dataFile.Name)}";

                        bodyTemplate.Append("<div><img src=\"" + uri + "\" /></div>");
                    }
                }
                bodyTemplate.Append("</div>");
            }

            identityMessage.Body        = new StringTemplateRenderer().Render(bodyTemplate.ToString(), model);
            identityMessage.Destination = friendUserDb.Mail;
            await _emailService.SendAsync(identityMessage);
        }
        private static async Task <SiteMap.Site> SendMailNoUserAsync(SiteMap.Site siteInfo, IEmailService _emailService, ApplicationUser userDb, string mail)
        {
            var model = new AdministrationAddUserNotFoundModel()
            {
                AdderUserName = userDb.FullName,
                SiteName      = siteInfo.Name,
                SiteUrl       = siteInfo.Url,
            };
            var identityMessage = new MailMessage();

            identityMessage.Subject = string.Format("[{0}] {1} vous a donné les droits administrateur", model.SiteName,
                                                    model.AdderUserName);
            identityMessage.Body = new StringTemplateRenderer().Render(
                ResourcesLoader.Load(String.Concat("Sites", "Core", "Command", "User", "SaveSiteUser", "AdministrationAddUserNotfound.st")), model);
            identityMessage.Destination = mail;
            await _emailService.SendAsync(identityMessage);

            return(siteInfo);
        }
        private static async Task SendEmailAsync(SiteMap.Site siteInfo, IEmailService _emailService, SiteUserDbModel friendUserDb, ApplicationUser userDb)
        {
            var model = new MailInvitation()
            {
                UserNameSender = userDb.FullName,
                UserName       = friendUserDb.FullName,
                SiteName       = siteInfo.Name,
                SiteUrl        = siteInfo.Url,
            };

            var identityMessage = new MailMessage();

            identityMessage.Subject = string.Format("[{0}] {1} vous invite à vous inscrire sur le site", model.SiteName,
                                                    model.UserNameSender);
            identityMessage.Body = new StringTemplateRenderer().Render(ResourcesLoader.Load(Path.Combine("Sites", "Core", "Renderers", "MailInvitation.st"))
                                                                       , model);
            identityMessage.Destination = friendUserDb.Mail;
            await _emailService.SendAsync(identityMessage);
        }