Skip to content

Commit 3f4316a

Browse files
author
Bilal Boussayoud
authored
feat: add tests & use case for From personalization (#1137)
* feat: add tests & use case for from personalization
1 parent 6dd50a2 commit 3f4316a

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

USE_CASES.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ This document provides examples for specific use cases. Please [open an issue](h
88
- [Send a Single Email to Multiple Recipients](#send-a-single-email-to-multiple-recipients)
99
- [Send a Single Email to a Single Recipient](#send-a-single-email-to-a-single-recipient)
1010
- [Send Multiple Emails to Multiple Recipients](#send-multiple-emails-to-multiple-recipients)
11+
- [Send Multiple Emails with Personalizations](#send-multiple-emails-with-personalizations)
1112
- [Transactional Templates](#transactional-templates)
1213
- [With Mail Helper Class](#with-mail-helper-class)
1314
- [Without Mail Helper Class](#without-mail-helper-class)
@@ -492,6 +493,63 @@ namespace Example
492493
}
493494
```
494495

496+
<a name="multipleemailspersonalization"></a>
497+
# Send Multiple Emails with Personalizations
498+
499+
```csharp
500+
using SendGrid;
501+
using SendGrid.Helpers.Mail;
502+
using System;
503+
using System.Threading.Tasks;
504+
using System.Collections.Generic;
505+
506+
namespace Example
507+
{
508+
internal class Example
509+
{
510+
private static void Main()
511+
{
512+
Execute().Wait();
513+
}
514+
515+
static async Task Execute()
516+
{
517+
var apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY");
518+
var client = new SendGridClient(apiKey);
519+
var from = new EmailAddress("[email protected]");
520+
var subject = "Hello from Twilio SendGrid!";
521+
522+
// Note that the domain for all from addresses must match
523+
var msg = new SendGridMessage();
524+
msg.Subject = subject;
525+
msg.AddContent(MimeType.Text, "Easy to use, even with C#!");
526+
msg.SetFrom(from);
527+
528+
msg.Personalizations = new List<Personalization>() {
529+
new Personalization() {
530+
Tos = new List<EmailAddress>() {
531+
new EmailAddress("[email protected]")
532+
}
533+
},
534+
new Personalization() {
535+
Tos = new List<EmailAddress>() {
536+
new EmailAddress("[email protected]")
537+
},
538+
From = new EmailAddress("[email protected]")
539+
},
540+
};
541+
var response = await client.SendEmailAsync(msg);
542+
543+
Console.WriteLine(msg.Serialize());
544+
Console.WriteLine(response.StatusCode);
545+
Console.WriteLine(response.Headers.ToString());
546+
Console.WriteLine("\n\nPress any key to exit.");
547+
Console.ReadLine();
548+
}
549+
}
550+
}
551+
```
552+
495553
<a name="transactional-templates"></a>
496554
# Transactional Templates
497555

tests/SendGrid.Tests/Integration.cs

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,91 @@ public void TestCreateMultipleEmailsToMultipleRecipients()
592592
Assert.Equal("{\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"},\"personalizations\":[{\"to\":[{\"email\":\"[email protected]\"}],\"subject\":\"Test Subject1\",\"substitutions\":{\"-name-\":\"Name1\"}},{\"to\":[{\"email\":\"[email protected]\"}],\"subject\":\"Test Subject2\",\"substitutions\":{\"-name-\":\"Name1\"}},{\"to\":[{\"email\":\"[email protected]\"}],\"subject\":\"Test Subject3\",\"substitutions\":{\"-name-\":\"Name1\"}}],\"content\":[{\"type\":\"text/plain\",\"value\":\"Hello -name-\"}]}", msg5.Serialize());
593593
}
594594

595+
[Fact]
596+
public void TestAddFrom()
597+
{
598+
// Personalization not passed in, Personalization does not exist
599+
var msg = new SendGridMessage();
600+
msg.AddTo(new EmailAddress("[email protected]", "Example User"));
601+
msg.SetFrom(new EmailAddress("[email protected]", "Example User"));
602+
Assert.Equal("{\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"},\"personalizations\":[{\"to\":[{\"name\":\"Example User\",\"email\":\"[email protected]\"}]}]}", msg.Serialize());
603+
604+
// Personalization passed in, no Personalizations
605+
msg = new SendGridMessage();
606+
var toEmail = new EmailAddress("[email protected]", "Example User");
607+
var fromEmail = new EmailAddress("[email protected]", "Example User");
608+
var personalization = new Personalization()
609+
{
610+
Tos = new List<EmailAddress>()
611+
{
612+
toEmail
613+
},
614+
From = fromEmail
615+
};
616+
msg.AddTo(new EmailAddress("[email protected]", "Example User"), 0, personalization);
617+
Assert.Equal("{\"personalizations\":[{\"to\":[{\"name\":\"Example User\",\"email\":\"[email protected]\"}," +
618+
"{\"name\":\"Example User\",\"email\":\"[email protected]\"}]," +
619+
"\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"}}]}", msg.Serialize());
620+
621+
// Personalization passed in, Personalization exists
622+
msg = new SendGridMessage();
623+
toEmail = new EmailAddress("[email protected]", "Example User");
624+
fromEmail = new EmailAddress("[email protected]", "Example User");
625+
msg.Personalizations = new List<Personalization>() {
626+
new Personalization() {
627+
Tos = new List<EmailAddress>()
628+
{
629+
toEmail
630+
},
631+
From = fromEmail
632+
}
633+
};
634+
toEmail = new EmailAddress("[email protected]", "Example User");
635+
fromEmail = new EmailAddress("[email protected]", "Example User");
636+
personalization = new Personalization()
637+
{
638+
Tos = new List<EmailAddress>()
639+
{
640+
toEmail
641+
},
642+
From = fromEmail
643+
};
644+
msg.AddTo(toEmail, 1, personalization);
645+
Assert.Equal("{\"personalizations\":[{\"to\":[{\"name\":\"Example User\",\"email\":\"[email protected]\"}]," +
646+
"\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"}}," +
647+
"{\"to\":[{\"name\":\"Example User\",\"email\":\"[email protected]\"}]," +
648+
"\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"}}]}", msg.Serialize());
649+
650+
651+
// Personalization not passed in Personalizations exists
652+
msg = new SendGridMessage();
653+
toEmail = new EmailAddress("[email protected]", "Example User");
654+
fromEmail = new EmailAddress("[email protected]", "Example User");
655+
msg.Personalizations = new List<Personalization>() {
656+
new Personalization() {
657+
Tos = new List<EmailAddress>()
658+
{
659+
toEmail
660+
},
661+
From = fromEmail
662+
}
663+
};
664+
toEmail = new EmailAddress("[email protected]", "Example User");
665+
fromEmail = new EmailAddress("[email protected]", "Example User");
666+
personalization = new Personalization()
667+
{
668+
Tos = new List<EmailAddress>()
669+
{
670+
toEmail
671+
},
672+
From = fromEmail
673+
};
674+
msg.Personalizations.Add(personalization);
675+
msg.AddTo(new EmailAddress("[email protected]", "Example User"));
676+
Assert.Equal("{\"personalizations\":[{\"to\":[{\"name\":\"Example User\",\"email\":\"[email protected]\"},{\"name\":\"Example User\",\"email\":\"[email protected]\"}]," +
677+
"\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"}},{\"to\":[{\"name\":\"Example User\",\"email\":\"[email protected]\"}]," +
678+
"\"from\":{\"name\":\"Example User\",\"email\":\"[email protected]\"}}]}", msg.Serialize());
679+
}
595680
[Fact]
596681
public void TestAddTo()
597682
{

0 commit comments

Comments
 (0)