private void InstallNotificationDependencies(IServiceCollection services) { services.AddTransient <EmailBuilder <UserActivationEmailModel>, UserActivationEmailBuilder>(); services.AddTransient <EmailBuilder <ResetPasswordEmailModel>, ForgotPasswordEmailBuilder>(); services.AddSingleton(sp => { var emailServerConnectionSettings = new EmailServerConnectionSettings { ApiKey = Configuration["SendGridApiKey"], SenderEmailAddress = Configuration["SendGridSenderEmail"], SenderName = Configuration["SendGridSenderName"] }; return(emailServerConnectionSettings); }); services.AddTransient <INotificationService, NotificationService>((serviceProvider) => { var emailConnectionSettings = serviceProvider.GetRequiredService <EmailServerConnectionSettings>(); var emailFactory = new EmailClientFactory(); var sendGridClient = emailFactory.CreateClient(emailConnectionSettings.ApiKey); var emailBuilderRetriever = new EmailBuilderRetriever(serviceProvider, emailConnectionSettings); return(new NotificationService(sendGridClient, emailBuilderRetriever)); }); services.Configure <RazorViewEngineOptions>(options => { options.FileProviders.Clear(); options.FileProviders.Add(new PhysicalFileProvider(Directory.GetCurrentDirectory())); }); services.AddTransient <IRazorViewToStringRenderer, RazorViewToStringRenderer>(); }
public EmailBuilderRetriever( IServiceProvider serviceProvider, EmailServerConnectionSettings serverConnectionSettings) { Guard.ArgumentNotNull(nameof(serverConnectionSettings), serverConnectionSettings); _serverConnectionSettings = serverConnectionSettings; Guard.ArgumentNotNull(nameof(serviceProvider), serviceProvider); _serviceProvider = serviceProvider; }
public async Task <SendGridMessage> BuildAsync(EmailServerConnectionSettings connectionSettings, TEmailModel emailTemplateModel) { var from = new EmailAddress(connectionSettings.SenderEmailAddress, connectionSettings.SenderName); var to = new EmailAddress(emailTemplateModel.Email); var body = await CreateEmailBodyAsync(emailTemplateModel); return(MailHelper.CreateSingleEmail(from, to, CreateEmailSubject(emailTemplateModel), string.Empty, body)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.InstallIdentityDependencies(Configuration); services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "User Management API", Version = "v1" }); }); services.AddSingleton(sp => { var emailServerConnectionSettings = new EmailServerConnectionSettings { ApiKey = Configuration["SendGridApiKey"], SenderEmailAddress = Configuration["SendGridSenderEmail"], SenderName = Configuration["SendGridSenderName"] }; return(emailServerConnectionSettings); }); //services.AddTransient<IEmailHtmlContentBuilder, EmailHtmlContentBuilder>(); services.AddTransient <EmailBuilder <UserActivationEmailModel>, UserActivationEmailBuilder>(); services.AddTransient <EmailBuilder <ResetPasswordEmailModel>, ForgotPasswordEmailBuilder>(); services.AddTransient <INotificationService, NotificationService>((serviceProvider) => { var emailConnectionSettings = serviceProvider.GetRequiredService <EmailServerConnectionSettings>(); var emailFactory = new EmailClientFactory(); var sendGridClient = emailFactory.CreateClient(emailConnectionSettings.ApiKey); var emailBuilderRetriever = new EmailBuilderRetriever(serviceProvider, emailConnectionSettings); return(new NotificationService(sendGridClient, emailBuilderRetriever)); }); services.AddMvc(); var assembly = typeof(INotificationService).GetTypeInfo().Assembly; var embeddedFileProvider = new EmbeddedFileProvider( assembly, "ViewComponentLibrary" ); services.Configure <RazorViewEngineOptions>(options => { options.FileProviders.Clear(); options.FileProviders.Add(new PhysicalFileProvider(Directory.GetCurrentDirectory())); }); services.AddTransient <IRazorViewToStringRenderer, RazorViewToStringRenderer>(); }