using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
using SendGrid.Helpers.Mail;
using Newtonsoft.Json;
using System.Threading.Tasks;
namespace Example
{
internal class Example
{
private static void Main()
{
// v3 Mail Helper
HelloEmail().Wait(); // this will actually send an email
KitchenSink().Wait(); // this will only send an email if you set SandBox Mode to false
// v3 Template Example with Mail Helper
TemplateWithHelper().Wait();
// v3 Template Example without Mail Helper
TemplateWithoutHelper().Wait();
// v3 Web API
ApiKeys().Wait();
}
private static async Task TemplateWithHelper()
{
String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com");
Email from = new Email("dx@sendgrid.com");
String subject = "I'm replacing the subject tag";
Email to = new Email("elmer@sendgrid.com");
Content content = new Content("text/html", "I'm replacing the body tag ");
Mail mail = new Mail(from, subject, to, content);
mail.TemplateId = "13b8f94f-bcae-4ec6-b752-70d6cb59f932";
mail.Personalization[0].AddSubstitution("-name-", "Example User");
mail.Personalization[0].AddSubstitution("-city-", "Denver");
dynamic response = await sg.client.mail.send.post(requestBody: mail.Get());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.ReadLine();
}
private static async Task TemplateWithoutHelper()
{
String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com");
string data = @"{
'personalizations': [
{
'to': [
{
'email': 'elmer@sendgrid.com'
}
],
'substitutions': {
'-name-': 'Example User',
'-city-': 'Denver'
},
'subject': 'I\'m replacing the subject tag'
}
],
'from': {
'email': 'dx@sendgrid.com'
},
'content': [
{
'type': 'text/html',
'value': 'I\'m replacing the body tag '
}
],
'template_id': '13b8f94f-bcae-4ec6-b752-70d6cb59f932'
}";
//test @example.com
Object json = JsonConvert.DeserializeObject(data);
dynamic response = await sg.client.mail.send.post(requestBody: json.ToString());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.ReadLine();
}
private static async Task HelloEmail()
{
String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com");
Email from = new Email("test@example.com");
String subject = "Hello World from the SendGrid CSharp Library";
Email to = new Email("test@example.com");
Content content = new Content("text/plain", "Textual content");
Mail mail = new Mail(from, subject, to, content);
Email email = new Email("test2@example.com");
mail.Personalization[0].AddTo(email);
dynamic response = await sg.client.mail.send.post(requestBody: mail.Get());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine(mail.Get());
Console.ReadLine();
}
private static async Task KitchenSink()
{
String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com");
Mail mail = new Mail();
Email email = new Email();
email.Name = "Example User";
email.Address = "test@example.com";
mail.From = email;
mail.Subject = "Hello World from the SendGrid CSharp Library";
Personalization personalization = new Personalization();
email = new Email();
email.Name = "Example User";
email.Address = "test1@example.com";
personalization.AddTo(email);
email = new Email();
email.Name = "Example User";
email.Address = "test2@example.com";
personalization.AddCc(email);
email = new Email();
email.Name = "Example User";
email.Address = "test3@example.com";
personalization.AddCc(email);
email = new Email();
email.Name = "Example User";
email.Address = "test4@example.com";
personalization.AddBcc(email);
email = new Email();
email.Name = "Example User";
email.Address = "test5@example.com";
personalization.AddBcc(email);
personalization.Subject = "Thank you for signing up, %name%";
personalization.AddHeader("X-Test", "True");
personalization.AddHeader("X-Mock", "True");
personalization.AddSubstitution("%name%", "Example User");
personalization.AddSubstitution("%city%", "Denver");
personalization.AddCustomArgs("marketing", "false");
personalization.AddCustomArgs("transactional", "true");
personalization.SendAt = 1461775051;
mail.AddPersonalization(personalization);
personalization = new Personalization();
email = new Email();
email.Name = "Example User";
email.Address = "test1@example.com";
personalization.AddTo(email);
email = new Email();
email.Name = "Example User";
email.Address = "test2@example.com";
personalization.AddCc(email);
email = new Email();
email.Name = "Example User";
email.Address = "test3@example.com";
personalization.AddCc(email);
email = new Email();
email.Name = "Example User";
email.Address = "test4@example.com";
personalization.AddBcc(email);
email = new Email();
email.Name = "Example User";
email.Address = "test5@example.com";
personalization.AddBcc(email);
personalization.Subject = "Thank you for signing up, %name%";
personalization.AddHeader("X-Test", "True");
personalization.AddHeader("X-Mock", "True");
personalization.AddSubstitution("%name%", "Example User");
personalization.AddSubstitution("%city%", "Denver");
personalization.AddCustomArgs("marketing", "false");
personalization.AddCustomArgs("transactional", "true");
personalization.SendAt = 1461775051;
mail.AddPersonalization(personalization);
Content content = new Content();
content.Type = "text/plain";
content.Value = "Textual content";
mail.AddContent(content);
content = new Content();
content.Type = "text/html";
content.Value = "HTML content";
mail.AddContent(content);
content = new Content();
content.Type = "text/calendar";
content.Value = "Party Time!!";
mail.AddContent(content);
Attachment attachment = new Attachment();
attachment.Content = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBwdW12";
attachment.Type = "application/pdf";
attachment.Filename = "balance_001.pdf";
attachment.Disposition = "attachment";
attachment.ContentId = "Balance Sheet";
mail.AddAttachment(attachment);
attachment = new Attachment();
attachment.Content = "BwdW";
attachment.Type = "image/png";
attachment.Filename = "banner.png";
attachment.Disposition = "inline";
attachment.ContentId = "Banner";
mail.AddAttachment(attachment);
mail.TemplateId = "13b8f94f-bcae-4ec6-b752-70d6cb59f932";
mail.AddHeader("X-Day", "Monday");
mail.AddHeader("X-Month", "January");
mail.AddSection("%section1", "Substitution for Section 1 Tag");
mail.AddSection("%section2", "Substitution for Section 2 Tag");
mail.AddCategory("customer");
mail.AddCategory("vip");
mail.AddCustomArgs("campaign", "welcome");
mail.AddCustomArgs("sequence", "2");
ASM asm = new ASM();
asm.GroupId = 3;
List groups_to_display = new List()
{
1, 4, 5
};
asm.GroupsToDisplay = groups_to_display;
mail.Asm = asm;
mail.SendAt = 1461775051;
mail.SetIpPoolId = "23";
// This must be a valid [batch ID](https://sendgrid.com/docs/API_Reference/SMTP_API/scheduling_parameters.html)
// mail.BatchId = "some_batch_id";
MailSettings mailSettings = new MailSettings();
BCCSettings bccSettings = new BCCSettings();
bccSettings.Enable = true;
bccSettings.Email = "test@example.com";
mailSettings.BccSettings = bccSettings;
BypassListManagement bypassListManagement = new BypassListManagement();
bypassListManagement.Enable = true;
mailSettings.BypassListManagement = bypassListManagement;
FooterSettings footerSettings = new FooterSettings();
footerSettings.Enable = true;
footerSettings.Text = "Some Footer Text";
footerSettings.Html = "Some HTML Here ";
mailSettings.FooterSettings = footerSettings;
SandboxMode sandboxMode = new SandboxMode();
sandboxMode.Enable = true;
mailSettings.SandboxMode = sandboxMode;
SpamCheck spamCheck = new SpamCheck();
spamCheck.Enable = true;
spamCheck.Threshold = 1;
spamCheck.PostToUrl = "https://gotchya.example.com";
mailSettings.SpamCheck = spamCheck;
mail.MailSettings = mailSettings;
TrackingSettings trackingSettings = new TrackingSettings();
ClickTracking clickTracking = new ClickTracking();
clickTracking.Enable = true;
clickTracking.EnableText = false;
trackingSettings.ClickTracking = clickTracking;
OpenTracking openTracking = new OpenTracking();
openTracking.Enable = true;
openTracking.SubstitutionTag = "Optional tag to replace with the open image in the body of the message";
trackingSettings.OpenTracking = openTracking;
SubscriptionTracking subscriptionTracking = new SubscriptionTracking();
subscriptionTracking.Enable = true;
subscriptionTracking.Text = "text to insert into the text/plain portion of the message";
subscriptionTracking.Html = "HTML to insert into the text/html portion of the message ";
subscriptionTracking.SubstitutionTag = "text to insert into the text/plain portion of the message";
trackingSettings.SubscriptionTracking = subscriptionTracking;
Ganalytics ganalytics = new Ganalytics();
ganalytics.Enable = true;
ganalytics.UtmCampaign = "some campaign";
ganalytics.UtmContent = "some content";
ganalytics.UtmMedium = "some medium";
ganalytics.UtmSource = "some source";
ganalytics.UtmTerm = "some term";
trackingSettings.Ganalytics = ganalytics;
mail.TrackingSettings = trackingSettings;
email = new Email();
email.Address = "test@example.com";
mail.ReplyTo = email;
dynamic response = await sg.client.mail.send.post(requestBody: mail.Get());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine(mail.Get());
Console.ReadLine();
}
private static async Task ApiKeys()
{
String apiKey = Environment.GetEnvironmentVariable("SENDGRID_APIKEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGrid.SendGridAPIClient(apiKey, "https://api.sendgrid.com");
string queryParams = @"{
'limit': 100
}";
dynamic response = await sg.client.api_keys.get(queryParams: queryParams);
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine("\n\nPress any key to continue to POST.");
Console.ReadLine();
// POST
string requestBody = @"{
'name': 'My API Key 5',
'scopes': [
'mail.send',
'alerts.create',
'alerts.read'
]
}";
Object json = JsonConvert.DeserializeObject(requestBody);
response = await sg.client.api_keys.post(requestBody: json.ToString());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
JavaScriptSerializer jss = new JavaScriptSerializer();
var ds_response = jss.Deserialize>(response.Body.ReadAsStringAsync().Result);
string api_key_id = ds_response["api_key_id"];
Console.WriteLine("\n\nPress any key to continue to GET single.");
Console.ReadLine();
// GET Single
response = await sg.client.api_keys._(api_key_id).get();
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine("\n\nPress any key to continue to PATCH.");
Console.ReadLine();
// PATCH
requestBody = @"{
'name': 'A New Hope'
}";
json = JsonConvert.DeserializeObject(requestBody);
response = await sg.client.api_keys._(api_key_id).patch(requestBody: json.ToString());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine("\n\nPress any key to continue to PUT.");
Console.ReadLine();
// PUT
requestBody = @"{
'name': 'A New Hope',
'scopes': [
' user.profile.read',
' user.profile.update'
]
}";
json = JsonConvert.DeserializeObject(requestBody);
response = await sg.client.api_keys._(api_key_id).put(requestBody: json.ToString());
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Body.ReadAsStringAsync().Result);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine("\n\nPress any key to continue to DELETE.");
Console.ReadLine();
// DELETE
response = await sg.client.api_keys._(api_key_id).delete();
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Headers.ToString());
Console.WriteLine("\n\nPress any key to exit.");
Console.ReadLine();
}
}
}