public void Send(SendGridMessage message)
        {
            var content = GetContent(message);

            var client = new HttpClient();

            var response = client.PostAsync(Endpoint, content).Result;

            var responseContent = response.Content.ReadAsStringAsync().Result;

            var result = JsonConvert.DeserializeObject<GenericResult>(responseContent);

            if (!result.IsSuccess)
            {
                throw new SendGridException(result.Errors[0]);
            }
        }
        public async Task SendAsync(SendGridMessage message)
        {
            var content = GetContent(message);

            var client = new HttpClient();

            var response = await client.PostAsync(Endpoint, content);

            var responseContent = await response.Content.ReadAsStringAsync();

            var result = JsonConvert.DeserializeObject<GenericResult>(responseContent);

            if (!result.IsSuccess)
            {
                throw new SendGridException(result.Message);
            }
        }
 public static void UseTemplateEngine(this SendGridMessage message, string templateId)
 {
     message.Header.UseTemplateEngine(templateId);
 }
 public static void UseSubscriptionTrack(this SendGridMessage message, string html, string text, string replace)
 {
     message.Header.UseSubscriptionTrack(html, text, replace);
 }
 public static void UseSpamCheck(this SendGridMessage message, double maxscore, string url)
 {
     message.Header.UseSpamCheck(maxscore, url);
 }
 public static void UseOpenTrack(this SendGridMessage message)
 {
     message.Header.UseOpenTrack();
 }
 public static void UseGravatar(this SendGridMessage message)
 {
     message.Header.UseGravatar();
 }
 public static void UseGoogleAnalytics(this SendGridMessage message, string source, string medium, string term, string content, string campaign)
 {
     message.Header.UseGoogleAnalytics(source, medium, term, content, campaign);
 }
 public static void UseFooter(this SendGridMessage message, string html, string text)
 {
     message.Header.UseFooter(html, text);
 }
 public static void UseDomainKeys(this SendGridMessage message, string domain, bool sender)
 {
     message.Header.UseDomainKeys(domain, sender);
 }
 public static void UseDkim(this SendGridMessage message, string domain, bool useFrom)
 {
     message.Header.UseDkim(domain, useFrom);
 }
 public static void UseBypassListManagement(this SendGridMessage message)
 {
     message.Header.UseBypassListManagement();
 }
        private MultipartFormDataContent GetContent(SendGridMessage message)
        {
            var content = new MultipartFormDataContent
            {
                { new StringContent(JsonConvert.SerializeObject(message.Headers)), "headers" },
                { new StringContent(message.From), "from" },
                { new StringContent(message.Subject), "subject" },
                { new StringContent(message.Header.ToString()), "x-smtpapi" }
            };

            if (_credentials != null)
            {
                content.Add(new StringContent(_credentials.UserName), "api_user");
                content.Add(new StringContent(_credentials.Password), "api_key");
            }

            if (message.FromName != null)
            {
                content.Add(new StringContent(message.FromName), "fromname");
            }

            if (message.ReplyTo != null)
            {
                content.Add(new StringContent(message.ReplyTo), "replyto");
            }

            if (message.Text != null)
            {
                content.Add(new StringContent(message.Text), "text");
            }

            if (message.Html != null)
            {
                content.Add(new StringContent(message.Html), "html");
            }

            if (message.Date.HasValue)
            {
                content.Add(new StringContent(message.Date.Value.ToString("r")), "date");
            }

            foreach (var to in message.To)
            {
                content.Add(new StringContent(to), "to[]");
            }

            foreach (var bcc in message.Bcc)
            {
                content.Add(new StringContent(bcc), "bcc[]");
            }

            foreach (var cc in message.Cc)
            {
                content.Add(new StringContent(cc), "cc[]");
            }

            foreach (var item in message.Files)
            {
                content.Add(new StreamContent(item.Value), "files[" + item.Key + "]");
            }

            foreach (var item in message.Content)
            {
                content.Add(new StringContent(item.Value), "content[" + item.Key + "]");
            }

            return(content);
        }
        private MultipartFormDataContent GetContent(SendGridMessage message)
        {
            var content = new MultipartFormDataContent
            {
                { new StringContent(_credentials.UserName), "api_user" },
                { new StringContent(_credentials.Password), "api_key" },
                { new StringContent(JsonConvert.SerializeObject(message.Headers)), "headers" },
                { new StringContent(message.From), "from" },
                { new StringContent(message.Subject), "subject" },
                { new StringContent(message.Header.ToString()), "x-smtpapi" }
            };

            if (message.FromName != null)
            {
                content.Add(new StringContent(message.FromName), "fromname");
            }

            if (message.ReplyTo != null)
            {
                content.Add(new StringContent(message.ReplyTo), "replyto");
            }

            if (message.Text != null)
            {
                content.Add(new StringContent(message.Text), "text");
            }

            if (message.Html != null)
            {
                content.Add(new StringContent(message.Html), "html");
            }

            if (message.Date.HasValue)
            {
                content.Add(new StringContent(message.Date.Value.ToString("r")), "date");
            }

            foreach (var to in message.To)
            {
                content.Add(new StringContent(to), "to[]");
            }

            foreach (var bcc in message.Bcc)
            {
                content.Add(new StringContent(bcc), "bcc[]");
            }

            foreach (var cc in message.Cc)
            {
                content.Add(new StringContent(cc), "cc[]");
            }

            foreach (var item in message.Files)
            {
                content.Add(new StreamContent(item.Value), "files[" + item.Key + "]");
            }

            foreach (var item in message.Content)
            {
                content.Add(new StringContent(item.Value), "content[" + item.Key + "]");
            }

            return content;
        }
 public static void UseBcc(this SendGridMessage message, string email)
 {
     message.Header.UseBcc(email);
 }
 public static void UseTemplate(this SendGridMessage message, string html)
 {
     message.Header.UseTemplate(html);
 }
 public static void UseForwardSpam(this SendGridMessage message, string email)
 {
     message.Header.UseForwardSpam(email);
 }