public SendEmailRequest(IEnumerable <IEmailMessage> emailMessages, IMailjetOptions options)
        {
            if (emailMessages == null)
            {
                throw new ArgumentNullException(nameof(emailMessages));
            }

            Options = options ?? throw new ArgumentNullException(nameof(options));

            if (Options.EmailOptions.EmailApiVersion != EmailApiVersion.V3_1)
            {
                throw new UnsupportedApiVersionException();
            }

            var messages = emailMessages.ToList();

            if (messages.Count == 0)
            {
                throw new ArgumentException("There must be at least one message", nameof(emailMessages));
            }

            AuthenticationHeaderValue = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{options.PublicKey}:{options.PrivateKey}")));
            SetRequestBody(new { Messages = messages, options.EmailOptions.SandboxMode });
            HttpMethod = new HttpMethod("POST");
            Path       = "v3.1/send";
        }
        public MailjetSmsClient(IMailjetSimpleClient client, IMailjetOptions options)
        {
            this.client  = client ?? throw new ArgumentNullException(nameof(client));
            this.options = options ?? throw new ArgumentNullException(nameof(options));

            if (string.IsNullOrEmpty(options.Token))
            {
                throw new ArgumentException(nameof(options.Token), nameof(options.Token) + " can't be empty or null");
            }
        }
Exemplo n.º 3
0
 public ConfigurationFixture()
 {
     LoadEnvironmentVarsFromFile();
     MailjetOptions = new MailjetOptions
     {
         EmailOptions =
         {
             SandboxMode = true
         },
         Token      = "TEST",
         PrivateKey = Environment.GetEnvironmentVariable("MAILJET_PRIVATE_KEY"),
         PublicKey  = Environment.GetEnvironmentVariable("MAILJET_PUBLIC_KEY")
     };
 }
Exemplo n.º 4
0
        public SendSmsRequest(ISmsMessage smsMessage, IMailjetOptions options)
        {
            if (smsMessage == null)
            {
                throw new ArgumentNullException(nameof(smsMessage));
            }
            this.options = options ?? throw new ArgumentNullException(nameof(options));

            if (options.SmsOptions.SmsApiVersion != SmsApiVersion.V4)
            {
                throw new UnsupportedApiVersionException();
            }

            AuthenticationHeaderValue = new AuthenticationHeaderValue("Bearer", options.Token);
            SetRequestBody(smsMessage);
            HttpMethod = new HttpMethod("POST");
            Path       = "v4/sms-send";
        }
 /// <summary>
 /// Adds an <c>IMailjetOptions</c> instance as a singleton
 /// </summary>
 /// <param name="serviceCollection"></param>
 /// <param name="options">Mailjet options</param>
 public static void AddMailjetOptions(this IServiceCollection serviceCollection, IMailjetOptions options)
 {
     serviceCollection.AddSingleton(options);
 }
Exemplo n.º 6
0
        //Let's call it as a dependency here, for the sake of showing that the DI is working, but not very clever to do async here
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IMailjetEmailClient mailjetEmailClient, IMailjetSimpleClient mailjetSimpleClient, IMailjetOptions mailjetOptions, IMailjetSmsClient mailjetSmsClient)
        {
            var email = new EmailMessage("Test Testsson", "*****@*****.**");
            //var emailResponse = mailjetEmailClient.SendAsync(email).GetAwaiter().GetResult();

            var sms = new SmsMessage
            {
                To   = Environment.GetEnvironmentVariable("MAILJET_TEST_PHONE"),
                From = "Max Test",
                Text = "You should receive this :)"
            };
            var smsResponse = mailjetSmsClient.SendAsync(sms).GetAwaiter().GetResult();

            //The low level MailjetSimpleClient takes an IRequestFactory for sending a request. Anything that implements this (properly) can send whatever type of request
            //This is essentially the equivalent of what is being done in SendAsync() above.
            var basicResponse  = mailjetSimpleClient.SendRequestAsync(new SendEmailRequest(email, mailjetOptions)).GetAwaiter().GetResult();
            var basicResponse2 = mailjetSimpleClient.SendRequestAsync(new SendSmsRequest(sms, mailjetOptions));

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.Run(async(context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
Exemplo n.º 7
0
 public MailjetEmailClient(IMailjetSimpleClient client, IMailjetOptions options)
 {
     this.client = client ?? throw new ArgumentNullException(nameof(client));
     Options     = options ?? throw new ArgumentNullException(nameof(options));
 }
 public SendEmailRequest(IEmailMessage emailMessage, IMailjetOptions options) : this(new[] { emailMessage }, options)
 {
 }