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;
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        // 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>();
        }