[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/sendgrid/sendgrid-csharp/main/ExampleNet45Project/Program.cs [Back]  [Original]

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using SendGrid;
using SendGrid.Helpers.Mail;

namespace Example
{
    internal class Program
    {
        // HttpClient is intended to be instantiated once per application, rather than per-use.
        // See https://docs.microsoft.com/dotnet/api/system.net.http.httpclient#remarks
        private static readonly HttpClient HttpClient = new HttpClient();

        private static async Task Main()
        {
            var env = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT") ?? "Production";
            var configuration = new ConfigurationBuilder()
                    .AddJsonFile("appsettings.json", optional: true)
                    .AddJsonFile($"appsettings.{env}.json", optional: true)
                    .Build();

            // Retrieve the API key.
            var apiKey = Environment.GetEnvironmentVariable("SENDGRID_API_KEY") ?? configuration["SendGrid:ApiKey"];

            var client = new SendGridClient(HttpClient, new SendGridClientOptions { ApiKey = apiKey, HttpErrorAsException = true });

            // Send a Single Email using the Mail Helper
            var from = new EmailAddress(configuration.GetValue("SendGrid:From", "test@example.com"), "Example User");
            var subject = "Hello World from the Twilio SendGrid CSharp Library Helper!";
            var to = new EmailAddress(configuration.GetValue("SendGrid:To", "test@example.com"), "Example User");
            var plainTextContent = "Hello, Email from the helper [SendSingleEmailAsync]!";
            var htmlContent = "Hello, Email from the helper! [SendSingleEmailAsync]";
            var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
            var response = await client.SendEmailAsync(msg);
            Console.WriteLine(msg.Serialize());
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Headers);
            Console.WriteLine("\n\nPress  to continue.");
            Console.ReadLine();

            // Send a Single Email using the Mail Helper with convenience methods and initialized SendGridMessage object
            msg = new SendGridMessage
            {
                From = from,
                Subject = subject,
                PlainTextContent = plainTextContent,
                HtmlContent = htmlContent
            };
            msg.AddTo(to);
            response = await client.SendEmailAsync(msg);
            Console.WriteLine(msg.Serialize());
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Headers);
            Console.WriteLine("\n\nPress  to continue.");
            Console.ReadLine();

            // Send a Single Email using the Mail Helper, entirely with convenience methods
            msg = new SendGridMessage();
            msg.SetFrom(from);
            msg.SetSubject(subject);
            msg.AddContent(MimeType.Text, plainTextContent);
            msg.AddContent(MimeType.Html, htmlContent);
            msg.AddTo(to);
            response = await client.SendEmailAsync(msg);
            Console.WriteLine(msg.Serialize());
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Headers);
            Console.WriteLine("\n\nPress  to continue.");
            Console.ReadLine();

            // Send a Single Email Without the Mail Helper
            var data = @"{
              'personalizations': [
                {
                  'to': [
                    {
                      'email': 'test@example.com'
                    }
                  ],
                  'subject': 'Hello World from the Twilio SendGrid C# Library!'
                }
              ],
              'from': {
                'email': 'test@example.com'
              },
              'content': [
                {
                  'type': 'text/plain',
                  'value': 'Hello, Email!'
                }
              ]
            }";
            var json = JsonConvert.DeserializeObject(data);
            response = await client.RequestAsync(BaseClient.Method.POST,
                                                 json.ToString(),
                                                 urlPath: "mail/send");
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Headers);
            Console.WriteLine("\n\nPress  to continue.");
            Console.ReadLine();

            // GET Collection
            var queryParams = @"{
                'limit': 100
            }";
            response = await client.RequestAsync(method: BaseClient.Method.GET,
                                                          urlPath: "asm/groups",
                                                          queryParams: queryParams);
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Body.ReadAsStringAsync().Result);
            Console.WriteLine(response.Headers);
            Console.WriteLine("\n\nPress  to continue to POST.");
            Console.ReadLine();

            // POST
            var requestBody = @"{
              'description': 'Suggestions for products our users might like.',
              'is_default': false,
              'name': 'Magic Products'
            }";
            json = JsonConvert.DeserializeObject(requestBody);
            response = await client.RequestAsync(method: BaseClient.Method.POST,
                                                 urlPath: "asm/groups",
                                                 requestBody: json.ToString());
            var dsResponse = JsonConvert.DeserializeObject(response.Body.ReadAsStringAsync().Result);
            Console.WriteLine(response.StatusCode);
            Console.WriteLine(response.Body.ReadAsStringAsync().Result);
            Console.WriteLine(response.Headers);
            Console.WriteLine("\n\nPress  to continue to GET single.");
            Console.ReadLine();

            if (dsResponse != null && dsResponse.ContainsKey("id"))
            {
                var groupId = dsResponse["id"].ToString();

                // GET Single
                response = await client.RequestAsync(method: BaseClient.Method.GET,
                    urlPath: $"asm/groups/{groupId}");
                Console.WriteLine(response.StatusCode);
                Console.WriteLine(response.Body.ReadAsStringAsync().Result);
                Console.WriteLine(response.Headers);
                Console.WriteLine("\n\nPress  to continue to PATCH.");
                Console.ReadLine();


                // PATCH
                requestBody = @"{
                    'name': 'Cool Magic Products'
                }";
                json = JsonConvert.DeserializeObject(requestBody);

                response = await client.RequestAsync(method: BaseClient.Method.PATCH,
                    urlPath: $"asm/groups/{groupId}",
                    requestBody: json.ToString());
                Console.WriteLine(response.StatusCode);
                Console.WriteLine(response.Body.ReadAsStringAsync().Result);
                Console.WriteLine(response.Headers.ToString());

                Console.WriteLine("\n\nPress  to continue to PUT.");
                Console.ReadLine();

                // DELETE
                response = await client.RequestAsync(method: BaseClient.Method.DELETE,
                    urlPath: $"asm/groups/{groupId}");
                Console.WriteLine(response.StatusCode);
                Console.WriteLine(response.Headers.ToString());
                Console.WriteLine("\n\nPress  to DELETE and exit.");
                Console.ReadLine();
            }
        }
    }
}

Web Proxy Viewer  |  New URL  |  Original Page