public void CreateMimeMessage() { var message = new SendGrid(); var attachment = Path.GetTempFileName(); var text = "this is a test"; var html = "<b>This<\b> is a better test"; var headers = new KeyValuePair<String, String>("custom", "header"); message.AddAttachment(attachment); message.Text = text; message.Html = html; message.AddTo("*****@*****.**"); message.From = new MailAddress("*****@*****.**"); message.AddHeaders(new Dictionary<string, string> {{headers.Key, headers.Value}}); message.EnableGravatar(); var mime = message.CreateMimeMessage(); var sr = new StreamReader(mime.AlternateViews[0].ContentStream); var result = sr.ReadToEnd(); Assert.AreEqual(text, result); sr = new StreamReader(mime.AlternateViews[1].ContentStream); result = sr.ReadToEnd(); Assert.AreEqual(html, result); result = mime.Headers.Get(headers.Key); Assert.AreEqual(headers.Value, result); result = mime.Headers.Get("X-Smtpapi"); var expected = "{\"filters\" : {\"gravatar\" : {\"settings\" : {\"enable\" : \"1\"}}}}"; Assert.AreEqual(expected, result); result = mime.Attachments[0].Name; Assert.AreEqual(Path.GetFileName(attachment), result); }
public void TestFetchFormParams() { // Test Variables const string toAddress = "*****@*****.**"; const string ccAddress = "*****@*****.**"; const string bccAddress = "*****@*****.**"; const string fromAddress = "*****@*****.**"; const string subject = "Test Subject"; const string textBody = "Test Text Body"; const string htmlBody = "<p>Test HTML Body</p>"; const string headerKey = "headerkey"; var testHeader = new Dictionary<string, string> { { headerKey, "headervalue" } }; const string categoryName = "Example Category"; var message = new SendGrid(); message.AddTo(toAddress); message.AddCc(ccAddress); message.AddBcc(bccAddress); message.From = new MailAddress(fromAddress); message.Subject = subject; message.Text = textBody; message.Html = htmlBody; message.AddHeaders(testHeader); message.Header.SetCategory(categoryName); var webApi = new Web(new NetworkCredential(TestUsername, TestPassword)); var result = webApi.FetchFormParams(message); Assert.True(result.Any(r => r.Key == "api_user" && r.Value == TestUsername)); Assert.True(result.Any(r => r.Key == "api_key" && r.Value == TestPassword)); Assert.True(result.Any(r => r.Key == "to[]" && r.Value == toAddress)); Assert.True(result.Any(r => r.Key == "cc[]" && r.Value == ccAddress)); Assert.True(result.Any(r => r.Key == "bcc[]" && r.Value == bccAddress)); Assert.True(result.Any(r => r.Key == "from" && r.Value == fromAddress)); Assert.True(result.Any(r => r.Key == "subject" && r.Value == subject)); Assert.True(result.Any(r => r.Key == "text" && r.Value == textBody)); Assert.True(result.Any(r => r.Key == "html" && r.Value == htmlBody)); Assert.True( result.Any( r => r.Key == "headers" && r.Value == String.Format("{{\"{0}\":\"{1}\"}}", headerKey, testHeader[headerKey]))); Assert.True( result.Any(r => r.Key == "x-smtpapi" && r.Value == String.Format("{{\"category\" : \"{0}\"}}", categoryName))); }
// this code is used for the SMTPAPI examples private static void Main() { // Create the email object first, then add the properties. var myMessage = new SendGrid(); myMessage.AddTo("*****@*****.**"); myMessage.From = new MailAddress("*****@*****.**", "John Smith"); myMessage.Subject = "Testing the SendGrid Library"; myMessage.Text = "Hello World!"; // Create credentials, specifying your user name and password. var credentials = new NetworkCredential("username", "password"); // Create a Web transport for sending email. var transportWeb = new Web(credentials); // Send the email. if (transportWeb != null) transportWeb.DeliverAsync(myMessage); Console.WriteLine("Done!"); Console.ReadLine(); }
/// <summary> /// This feature allows you to create a message template, and specify different replacement /// strings for each specific recipient /// </summary> public void AddSubstitutionValues() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body message.Text = "Hi %name%! Pleased to meet you!"; //set the message subject message.Subject = "Testing Substitution Values"; //This replacement key must exist in the message body var replacementKey = "%name%"; //There should be one value for each recipient in the To list var substitutionValues = new List<String> {"Mr Foo", "Mrs Raz"}; message.AddSubstitution(replacementKey, substitutionValues); //create an instance of the SMTP transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable bypass list management message.EnableBypassListManagement(); //send the mail transportInstance.Deliver(message); }
public void TestGetRcpts() { var foo = new Mock<IHeader>(); var sg = new SendGrid(foo.Object); sg.AddTo("*****@*****.**"); sg.AddCc("*****@*****.**"); sg.AddBcc("*****@*****.**"); sg.AddBcc("*****@*****.**"); var rcpts = sg.GetRecipients(); Assert.AreEqual("*****@*****.**", rcpts.First(), "getRecipients check To"); Assert.AreEqual("*****@*****.**", rcpts.Skip(1).First(), "getRecipients check Cc"); Assert.AreEqual("*****@*****.**", rcpts.Skip(2).First(), "getRecipients check Bcc"); Assert.AreEqual("*****@*****.**", rcpts.Skip(3).First(), "getRecipients check Bcc x2"); }
public void TestAddTo() { var foo = new Mock<IHeader>(); var sg = new SendGrid(foo.Object); sg.AddTo("*****@*****.**"); Assert.AreEqual("*****@*****.**", sg.To.First().ToString(), "Single To Address" ); sg = new SendGrid(foo.Object); var strings = new String[2]; strings[0] = "*****@*****.**"; strings[1] = "*****@*****.**"; sg.AddTo(strings); Assert.AreEqual("*****@*****.**", sg.To[0].ToString(), "Multiple To addresses, check first one"); Assert.AreEqual("*****@*****.**", sg.To[1].ToString(), "Multiple To addresses, check second one"); sg = new SendGrid(foo.Object); var a = new Dictionary<String, String>(); a.Add("DisplayName", "Eric"); var datastruct = new Dictionary<string, IDictionary<string, string>> {{"*****@*****.**", a}}; sg.AddTo(datastruct); Assert.AreEqual("Eric", sg.To.First().DisplayName, "Single address with args"); }
/// <summary> /// This feature adds key value identifiers to be sent back as arguments over the event api for /// various events /// </summary> public void AddUniqueIdentifiers() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body message.Text = "Hello World"; //set the message subject message.Subject = "Testing Unique Identifiers"; var identifiers = new Dictionary<String, String>(); identifiers["customer"] = "someone"; identifiers["location"] = "somewhere"; message.AddUniqueArgs(identifiers); //create an instance of the SMTP transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable bypass list management message.EnableBypassListManagement(); //send the mail transportInstance.Deliver(message); }
/// <summary> /// Send a simple Plain Text email /// </summary> public void SimplePlaintextEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body message.Text = "Hello World Plain Text"; //set the message subject message.Subject = "Hello World Plain Text Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //send the mail transportInstance.Deliver(message); }
/// <summary> /// This feature tags the message with a specific tracking category, which will have aggregated stats /// viewable from your SendGrid account page. /// </summary> public void SetCategory() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body message.Text = "Hello World"; //set the message subject message.Subject = "Testing Categories"; var category = "vipCustomers"; message.SetCategory(category); //create an instance of the SMTP transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable bypass list management message.EnableBypassListManagement(); //send the mail transportInstance.Deliver(message); }
/// <summary> /// Add automatic unsubscribe links to the bottom of emails. /// http://docs.sendgrid.com/documentation/apps/subscription-tracking/ /// </summary> public void EnableUnsubscribeEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body message.Html = "This is the HTML body"; message.Text = "This is the plain text body"; //set the message subject message.Subject = "Hello World Unsubscribe Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable spamcheck //or optionally, you can specify 'replace' instead of the text and html in order to //place the link wherever you want. message.EnableUnsubscribe("Please click the following link to unsubscribe: <% %>", "Please click <% here %> to unsubscribe"); //send the mail transportInstance.Deliver(message); }
/// <summary> /// This feature wraps an HTML template around your email content. /// This can be useful for sending out newsletters and/or other HTML formatted messages. /// http://docs.sendgrid.com/documentation/apps/email-templates/ /// </summary> public void EnableTemplateEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body var timestamp = DateTime.Now.ToString("HH:mm:ss tt"); message.Html = "<p style='color:red';>Hello World</p>"; message.Html += "<p>Sent At : " + timestamp + "</p>"; message.Text = "Hello World plain text"; //set the message subject message.Subject = "Hello World Template Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable template message.EnableTemplate("<p>My Email Template <% body %> is awesome!</p>"); //send the mail transportInstance.Deliver(message); }
/// <summary> /// The Spam Checker filter, is useful when your web application allows your end users /// to create content that is then emailed through your SendGrid account. /// http://docs.sendgrid.com/documentation/apps/spam-checker-filter/ /// </summary> public void EnableSpamCheckEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body var timestamp = DateTime.Now.ToString("HH:mm:ss tt"); message.Html = "<p style='color:red';>VIAGRA!!!!!! Viagra!!! CHECKOUT THIS VIAGRA!!!! MALE ENHANCEMENT!!! </p>"; message.Html += "<p>Sent At : " + timestamp + "</p>"; //set the message subject message.Subject = "WIN A MILLION DOLLARS TODAY! WORK FROM HOME! A NIGERIAN PRINCE WANTS YOU!"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable spamcheck message.EnableSpamCheck(); //send the mail transportInstance.Deliver(message); }
/// <summary> /// Enable the Open Tracking to track when emails are opened. /// http://docs.sendgrid.com/documentation/apps/open-tracking/ /// </summary> public void EnableOpenTrackingEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body message.Html = "<p style='color:red';>Hello World Plain Text</p>"; //set the message subject message.Subject = "Hello World Open Tracking Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable gravatar message.EnableOpenTracking(); //send the mail transportInstance.Deliver(message); }
/// <summary> /// The Footer App will insert a custom footer at the bottom of the text and HTML bodies. /// http://docs.sendgrid.com/documentation/apps/google-analytics/ /// </summary> public void EnableGoogleAnalytics() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body var timestamp = DateTime.Now.ToString("HH:mm:ss tt"); message.Html = "<p style='color:red';>Hello World</p>"; message.Html += "<p>Sent At : " + timestamp + "</p>"; message.Html += "Checkout my page at <a href=\"http://microsoft.com\">Microsoft</a>"; message.Text = "Hello World plain text"; //set the message subject message.Subject = "Hello World Footer Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable Google Analytics message.EnableGoogleAnalytics("SendGridTest", "EMAIL", "Sendgrid", "ad-one", "My SG Campaign"); //send the mail transportInstance.Deliver(message); }
/// <summary> /// The Footer App will insert a custom footer at the bottom of the text and HTML bodies. /// http://docs.sendgrid.com/documentation/apps/footer/ /// </summary> public void EnableFooterEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body var timestamp = DateTime.Now.ToString("HH:mm:ss tt"); message.Html = "<p style='color:red';>Hello World</p>"; message.Html += "<p>Sent At : " + timestamp + "</p>"; message.Text = "Hello World plain text"; //set the message subject message.Subject = "Hello World Footer Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //Enable Footer message.EnableFooter("PLAIN TEXT FOOTER", "<p color='blue'>HTML FOOTER TEXT</p>"); //send the mail transportInstance.Deliver(message); }
/// <summary> /// Point the urls to Sendgrid Servers so that the clicks can be logged before /// being directed to the appropriate link /// http://docs.sendgrid.com/documentation/apps/click-tracking/ /// </summary> public void EnableClickTrackingEmail() { //create a new message object var message = new SendGrid(); //set the message recipients foreach (var recipient in _to) { message.AddTo(recipient); } //set the sender message.From = new MailAddress(_from); //set the message body var timestamp = DateTime.Now.ToString("HH:mm:ss tt"); message.Html = "<p style='color:red';>Hello World HTML </p> <a href='http://microsoft.com'>Checkout Microsoft!!</a>"; message.Html += "<p>Sent At : " + timestamp + "</p>"; message.Text = "hello world http://microsoft.com"; //set the message subject message.Subject = "Hello World Click Tracking Test"; //create an instance of the Web transport mechanism var transportInstance = new Web(new NetworkCredential(_username, _password)); //enable clicktracking message.EnableClickTracking(); //send the mail transportInstance.Deliver(message); }