Esempio n. 1
0
        private HttpRequest BuildRequest(SendGridSettings settings, string resource, HttpMethod method)
        {
            var request = new HttpRequestBuilder(settings.BaseUrl).Resource(resource)
                          .SetHeader("Authorization", $"Bearer {settings.ApiKey}")
                          .Build();

            request.Headers.ContentType = "application/json";
            request.Method = method;

            return(request);
        }
Esempio n. 2
0
        public void SendNotification(string title, string message, SendGridSettings settings)
        {
            try
            {
                var request = BuildRequest(settings, "mail/send", HttpMethod.Post);

                var payload = new SendGridPayload
                {
                    From = new SendGridEmail
                    {
                        Email = settings.From
                    }
                };

                payload.Content.Add(new SendGridContent
                {
                    Type  = "text/plain",
                    Value = message
                });

                var personalization = new SendGridPersonalization
                {
                    Subject = title,
                };

                foreach (var recipient in settings.Recipients)
                {
                    personalization.To.Add(new SendGridEmail
                    {
                        Email = recipient
                    });
                }

                payload.Personalizations.Add(personalization);

                request.SetContent(payload.ToJson());

                _httpClient.Execute(request);
            }
            catch (HttpException ex)
            {
                if (ex.Response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    throw new SendGridException("Unauthorized - AuthToken is invalid");
                }

                throw new SendGridException("Unable to connect to SendGrid. Status Code: {0}", ex);
            }
        }