コード例 #1
0
 /// <summary>
 /// Adds a PostmarkSender to be used by FluentEmail.
 /// </summary>
 /// <param name="builder">The builder for this FluentEmail service.</param>
 /// <param name="options">A preconfigured PostmarkSenderOptions instance.</param>
 public static FluentEmailServicesBuilder AddPostmarkSender(this FluentEmailServicesBuilder builder, PostmarkSenderOptions options)
 {
     _ = builder ?? throw new ArgumentNullException(nameof(builder));
     _ = options ?? throw new ArgumentNullException(nameof(options));
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new PostmarkSender(options)));
     return(builder);
 }
コード例 #2
0
        /// <summary>
        /// Adds a PostmarkSender to be used by FluentEmail.
        /// </summary>
        /// <param name="builder">The builder for this FluentEmail service.</param>
        /// <param name="serverToken">The serverToken to use to authenticate at the Postmark API.</param>
        /// <param name="configureOptions">A method that changes the desired options of a PostmarkSenderOptions instance.</param>
        public static FluentEmailServicesBuilder AddPostmarkSender(this FluentEmailServicesBuilder builder, string serverToken, Action <PostmarkSenderOptions> configureOptions)
        {
            _ = builder ?? throw new ArgumentNullException(nameof(builder));
            _ = configureOptions ?? throw new ArgumentNullException(nameof(configureOptions));
            var opts = new PostmarkSenderOptions(serverToken);

            configureOptions(opts);
            builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new PostmarkSender(opts)));
            return(builder);
        }
コード例 #3
0
 public static FluentEmailServicesBuilder AddGraphSender(
     this FluentEmailServicesBuilder builder,
     string GraphEmailAppId,
     string GraphEmailTenantId,
     string GraphEmailSecret,
     bool saveSentItems = false)
 {
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(_ => new GraphSender(GraphEmailAppId, GraphEmailTenantId, GraphEmailSecret, saveSentItems)));
     return(builder);
 }
コード例 #4
0
        public static FluentEmailServicesBuilder AddLiquidRenderer(
            this FluentEmailServicesBuilder builder,
            Action <LiquidRendererOptions>?configure = null)
        {
            builder.Services.AddOptions <LiquidRendererOptions>();
            if (configure != null)
            {
                builder.Services.Configure(configure);
            }

            builder.Services.TryAddSingleton <ITemplateRenderer, LiquidRenderer>();
            return(builder);
        }
コード例 #5
0
        public static FluentEmailServicesBuilder AddFluentEmail(this IServiceCollection services, string defaultFromEmail, string defaultFromName = "")
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            var builder = new FluentEmailServicesBuilder(services);

            services.TryAdd(ServiceDescriptor.Transient <IFluentEmail>(x =>
                                                                       new Email(x.GetService <ITemplateRenderer>(), x.GetService <ISender>(), defaultFromEmail, defaultFromName)
                                                                       ));

            services.TryAddTransient <IFluentEmailFactory, FluentEmailFactory>();

            return(builder);
        }
コード例 #6
0
 public static FluentEmailServicesBuilder AddSmtpSender(this FluentEmailServicesBuilder builder, string host, int port) => AddSmtpSender(builder, () => new SmtpClient(host, port));
コード例 #7
0
 public static FluentEmailServicesBuilder AddSmtpSender(this FluentEmailServicesBuilder builder, SmtpClient smtpClient)
 {
     builder.Services.TryAdd(ServiceDescriptor.Singleton <ISender>(x => new SmtpSender(smtpClient)));
     return(builder);
 }
コード例 #8
0
 public static FluentEmailServicesBuilder AddMailGunSender(this FluentEmailServicesBuilder builder, string domainName, string apiKey, MailGunRegion mailGunRegion = MailGunRegion.USA)
 {
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new MailgunSender(domainName, apiKey, mailGunRegion)));
     return(builder);
 }
コード例 #9
0
 /// <summary>
 /// Add razor renderer with a RazorLightProject to support views and layouts
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="razorLightProject"></param>
 /// <returns></returns>
 public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, RazorLightProject razorLightProject)
 {
     builder.Services.TryAdd(ServiceDescriptor.Singleton <ITemplateRenderer, RazorRenderer>(sp => new RazorRenderer(razorLightProject)));
     return(builder);
 }
コード例 #10
0
 public static FluentEmailServicesBuilder AddMailtrapSender(this FluentEmailServicesBuilder builder, string userName, string password, string host = null, int?port = null)
 {
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new MailtrapSender(userName, password, host, port)));
     return(builder);
 }
コード例 #11
0
 public static FluentEmailServicesBuilder AddSendGridSender(this FluentEmailServicesBuilder builder, string apiKey, bool sandBoxMode = false)
 {
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new SendGridSender(apiKey, sandBoxMode)));
     return(builder);
 }
コード例 #12
0
 public static FluentEmailServicesBuilder AddMailKitSender(this FluentEmailServicesBuilder builder, SmtpClientOptions smtpClientOptions)
 {
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new MailKitSender(smtpClientOptions)));
     return(builder);
 }
コード例 #13
0
 /// <summary>
 /// Add razor renderer with a RazorLightProject to support views and layouts
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="razorLightProject"></param>
 /// <returns></returns>
 public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, RazorLightProject razorLightProject)
 {
     builder.Services.AddRazorLight(() => RazorLightEngineFactory.Create(razorLightProject));
     builder.Services.AddSingleton <ITemplateRenderer, RazorRenderer>();
     return(builder);
 }
コード例 #14
0
 /// <summary>
 /// Add razor renderer with embedded views and layouts
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="embeddedResourceRootType"></param>
 /// <returns></returns>
 public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, Type embeddedResourceRootType)
 {
     builder.Services.AddRazorLight(() => RazorLightEngineFactory.Create(embeddedResourceRootType));
     builder.Services.AddSingleton <ITemplateRenderer, RazorRenderer>();
     return(builder);
 }
 public static FluentEmailServicesBuilder AddHandlebarsRenderer(this FluentEmailServicesBuilder builder)
 {
     builder.Services.TryAdd(ServiceDescriptor.Singleton <ITemplateRenderer, HandlebarsRenderer>());
     return(builder);
 }
コード例 #16
0
 public static FluentEmailServicesBuilder AddSmtpSender(this FluentEmailServicesBuilder builder, string host, int port, string username, string password) => AddSmtpSender(builder,
                                                                                                                                                                           () => new SmtpClient(host, port)
 {
     EnableSsl = true, Credentials = new NetworkCredential(username, password)
 });
コード例 #17
0
 public static FluentEmailServicesBuilder AddSmtpSender(this FluentEmailServicesBuilder builder, Func <SmtpClient> clientFactory)
 {
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new SmtpSender(clientFactory)));
     return(builder);
 }
コード例 #18
0
 /// <summary>
 /// Add razor renderer with project views and layouts
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="templateRootFolder"></param>
 /// <returns></returns>
 public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, string templateRootFolder)
 {
     builder.Services.TryAdd(ServiceDescriptor.Singleton <ITemplateRenderer, RazorRenderer>(sp => new RazorRenderer(templateRootFolder)));
     return(builder);
 }
コード例 #19
0
 /// <summary>
 /// Add razor renderer with embedded views and layouts
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="embeddedResourceRootType"></param>
 /// <returns></returns>
 public static FluentEmailServicesBuilder AddRazorRenderer(this FluentEmailServicesBuilder builder, Type embeddedResourceRootType)
 {
     builder.Services.TryAdd(ServiceDescriptor.Singleton <ITemplateRenderer, RazorRenderer>(sp => new RazorRenderer(embeddedResourceRootType)));
     return(builder);
 }
コード例 #20
0
 /// <summary>
 /// Adds a PostmarkSender to be used by FluentEmail.
 /// </summary>
 /// <param name="builder">The builder for this FluentEmail service.</param>
 /// <param name="serverToken">The serverToken to use to authenticate at the Postmark API.</param>
 public static FluentEmailServicesBuilder AddPostmarkSender(this FluentEmailServicesBuilder builder, string serverToken)
 {
     _ = builder ?? throw new ArgumentNullException(nameof(builder));
     builder.Services.TryAdd(ServiceDescriptor.Scoped <ISender>(x => new PostmarkSender(serverToken)));
     return(builder);
 }