private async Task NotifyAd(Shared.Functional.AdModel ad, string eventType, EmailTemplateEnum emailTemplate, NotificationTypeEnum notificationType, string callbackUrl) { _logger.LogInformation($"notify user {ad.OwnerId} for ad {ad.Id}"); await _eventTrackingService.Create(ad.OwnerId, "Ad", eventType); var notification = new Notification { Id = Guid.NewGuid(), CreatedDate = DateTime.Now, CssClass = "advalidate", ImageUrl = "alert-advalidate", MessageTitle = eventType, NotificationIcon = "alert-advalidate", NotificationType = notificationType.GetName(), NotificationUrl = callbackUrl, UserId = ad.OwnerId, DisplayMax = 1, IsDisplayOnlyOnce = true }; await _notificationService.Create(notification); await SendEmailTemplate(ad, emailTemplate, callbackUrl); }
private async Task SendEmailTemplate(Shared.Functional.AdModel ad, EmailTemplateEnum emailType, string callbackUrl) { _logger.LogInformation($"send email {emailType} to user {ad.OwnerId}"); var frontWebSite = _configuration["Service:FrontOffice:Url"]; var logoUrl = $"{frontWebSite.TrimEnd('/')}/assets/img/logo_full.png"; var unSubscribeUrl = $"{frontWebSite.TrimEnd('/')}/Account/UnSubscribe"; var parameters = new Dictionary <string, string>() { { "title", ad.Title }, { "frontWebSite", frontWebSite }, { "logoUrl", logoUrl }, { "unSubscribeUrl", unSubscribeUrl }, { "callbackUrl", callbackUrl } }; if (emailType == EmailTemplateEnum.AdEndPublished) { parameters.Add("EndPublishingDate", ad.EndDisplayTime.Value.ToLongDateString()); parameters.Add("ViewCount", ad.ViewCount.ToString()); } var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailType, parameters); var user = await _userManager.FindByIdAsync(ad.OwnerId); await _emailSender.SendEmailAsync(user.Email, ad.Title, message); }
public static string ReadSubject(EmailTemplateEnum mailType) { switch (mailType) { case EmailTemplateEnum.UserRegistrationConfirmedEmail: return(Resources.UserRegistrationConfirmedSubject); case EmailTemplateEnum.UserRegistrationCreatedEmail: return(Resources.UserRegistrationCreatedSubject); } return(null); }
public static byte[] ReadAttachment(EmailTemplateEnum mailType) { switch (mailType) { case EmailTemplateEnum.UserRegistrationConfirmedEmail: return(null); case EmailTemplateEnum.UserRegistrationCreatedEmail: return(null); } return(null); }
private async Task SendEmailTemplate(ApplicationUser user, EmailTemplateEnum emailTemplate, string emailSubject) { var longUrl = $"{_configuration["Service:FrontOffice:Url"].TrimEnd('/')}/subscription-pack"; var frontWebSite = _configuration["Service:FrontOffice:Url"]; var logoUrl = $"{_configuration["Service:FrontOffice:Url"]}/assets/img/logo_full.png"; var login = $"{user.DisplayName}"; var parameters = new Dictionary <string, string>() { { "login", login }, { "frontWebSite", frontWebSite }, { "logoUrl", logoUrl }, { "callbackUrl", longUrl } }; var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailTemplate, parameters); await _emailSenderService.SendEmailAsync(user.Email, emailSubject, message); }
public Task SendEmailAsync(string email, EmailTemplateEnum mailType, Dictionary <string, string> paramsDict) { if (!_disabled) { email = _isDev ? _devEmail : email; var message = EmailTemplateHelper.ReadTemplate(mailType); var subject = EmailTemplateHelper.ReadSubject(mailType); var attachment = EmailTemplateHelper.ReadAttachment(mailType); foreach (var param in paramsDict) { message = message.Replace("{{" + param.Key + "}}", param.Value); subject = subject.Replace("{{" + param.Key + "}}", param.Value); } //todo Remove this crutch if (_isDev) { message = message.Replace("http://localhost:8080/img/vshopelogosmall.png", "https://freshopdev.azurewebsites.net/img/vshopelogosmall.png"); } return(Execute(_config["Sendgrid:Key"], subject, message, email, attachment)); } return(Task.CompletedTask); }
private async Task SendForgetPasswordEmail(EmailTemplateEnum emailTemplate, Dictionary <string, string> parameters) { var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailTemplate, parameters); await _emailSender.SendEmailAsync(Input.Email, "Reset Password", message); }
private static string LoadTemplate(IServiceProvider serviceProvider, string rootPath, EmailTemplateEnum emailTemplate) { var reader = ActivatorUtilities.GetServiceOrCreateInstance <ITemplateFileReader>(serviceProvider); var templateFilePath = reader.GetFileName(rootPath, emailTemplate.GetName(), CultureInfo.CurrentCulture.TwoLetterISOLanguageName.ToLower()); if (string.IsNullOrEmpty(templateFilePath)) { return(string.Empty); } return(reader.ReadFile(templateFilePath)); }
public static string GenerateHtmlTemplate(IServiceProvider serviceProvider, string rootPath, EmailTemplateEnum emailTemplate, Dictionary <string, string> keyValuePairs) { var htmlBody = LoadTemplate(serviceProvider, rootPath, emailTemplate); foreach (var keyValue in keyValuePairs) { htmlBody = htmlBody.Replace($"[{keyValue.Key}]", keyValue.Value, StringComparison.OrdinalIgnoreCase); } return(htmlBody); }
public static string GetName(this EmailTemplateEnum emailTemplateEnum) { return(Enum.GetName(typeof(EmailTemplateEnum), emailTemplateEnum)); }
private async Task SendEmailConfirmation(string newMail, EmailTemplateEnum templatePattern, Dictionary <string, string> parameters) { var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, templatePattern, parameters); await _emailSender.SendEmailAsync(newMail, "Confirm your email", message); }
private async Task SendRegisterEmail(EmailTemplateEnum emailTemplate, Dictionary <string, string> parameters) { var message = GenerateHtmlTemplate(_serviceProvider, _env.WebRootPath, emailTemplate, parameters); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", message); }