summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrandon West <brawest@gmail.com>2014-10-07 14:54:52 -0600
committerBrandon West <brawest@gmail.com>2014-10-07 14:54:52 -0600
commitca91fad22dfec2cd1219267fe979c1d9a33a522e (patch)
tree9c15fbba66ff518d71fa9235bfd6b665c644399d
parentc8bbb307de6ab5d571797d2f210a0ec0f5531d3a (diff)
parent35c7bf635ab4b6fb9aeade60f4d4e60c2f2f929b (diff)
downloadsendgrid-csharp-ca91fad22dfec2cd1219267fe979c1d9a33a522e.zip
sendgrid-csharp-ca91fad22dfec2cd1219267fe979c1d9a33a522e.tar.gz
sendgrid-csharp-ca91fad22dfec2cd1219267fe979c1d9a33a522e.tar.bz2
Merge pull request #80 from pianomanjh/feature/cc-bcc
add CC, Bcc support
-rw-r--r--SendGrid/SendGridMail/ISendGrid.cs2
-rw-r--r--SendGrid/SendGridMail/SendGrid.cs50
-rw-r--r--SendGrid/SendGridMail/Transport/Web.cs11
-rw-r--r--SendGrid/Tests/Transport/TestWebApi.cs13
4 files changed, 73 insertions, 3 deletions
diff --git a/SendGrid/SendGridMail/ISendGrid.cs b/SendGrid/SendGridMail/ISendGrid.cs
index 6c9d3fa..1d5ea8f 100644
--- a/SendGrid/SendGridMail/ISendGrid.cs
+++ b/SendGrid/SendGridMail/ISendGrid.cs
@@ -16,6 +16,8 @@ namespace SendGrid
MailAddress From { get; set; }
MailAddress[] To { get; set; }
+ MailAddress[] Cc { get; set; }
+ MailAddress[] Bcc { get; set; }
MailAddress[] ReplyTo { get; set; }
Dictionary<String, MemoryStream> StreamedAttachments { get; set; }
String[] Attachments { get; set; }
diff --git a/SendGrid/SendGridMail/SendGrid.cs b/SendGrid/SendGridMail/SendGrid.cs
index 667f94d..1533a46 100644
--- a/SendGrid/SendGridMail/SendGrid.cs
+++ b/SendGrid/SendGridMail/SendGrid.cs
@@ -107,6 +107,32 @@ namespace SendGrid
}
}
+ public MailAddress[] Cc
+ {
+ get { return _message.CC.ToArray(); }
+ set
+ {
+ _message.CC.Clear();
+ foreach (var mailAddress in value)
+ {
+ _message.CC.Add(mailAddress);
+ }
+ }
+ }
+
+ public MailAddress[] Bcc
+ {
+ get { return _message.Bcc.ToArray(); }
+ set
+ {
+ _message.Bcc.Clear();
+ foreach (var mailAddress in value)
+ {
+ _message.Bcc.Add(mailAddress);
+ }
+ }
+ }
+
public String Subject
{
get { return _message.Subject; }
@@ -148,7 +174,29 @@ namespace SendGrid
}
}
- public Dictionary<String, MemoryStream> StreamedAttachments
+ public void AddCc(string address)
+ {
+ var mailAddress = new MailAddress(address);
+ _message.CC.Add(mailAddress);
+ }
+
+ public void AddCc(MailAddress address)
+ {
+ _message.CC.Add(address);
+ }
+
+ public void AddBcc(string address)
+ {
+ var mailAddress = new MailAddress(address);
+ _message.Bcc.Add(mailAddress);
+ }
+
+ public void AddBcc(MailAddress address)
+ {
+ _message.Bcc.Add(address);
+ }
+
+ public Dictionary<String, MemoryStream> StreamedAttachments
{
get { return _streamedAttachments; }
set { _streamedAttachments = value; }
diff --git a/SendGrid/SendGridMail/Transport/Web.cs b/SendGrid/SendGridMail/Transport/Web.cs
index 6a595c0..24202bf 100644
--- a/SendGrid/SendGridMail/Transport/Web.cs
+++ b/SendGrid/SendGridMail/Transport/Web.cs
@@ -191,6 +191,17 @@ namespace SendGrid
.Concat(message.To.ToList().Select(a => new KeyValuePair<String, String>("toname[]", a.DisplayName)))
.ToList();
}
+
+ if (message.Cc != null)
+ {
+ result.AddRange(message.Cc.Select(c => new KeyValuePair<string, string>("cc[]", c.Address)));
+ }
+
+ if (message.Bcc != null)
+ {
+ result.AddRange(message.Bcc.Select(c => new KeyValuePair<string, string>("bcc[]", c.Address)));
+ }
+
if (message.GetEmbeddedImages().Count > 0) {
result = result.Concat(message.GetEmbeddedImages().ToList().Select(x => new KeyValuePair<String, String>(string.Format("content[{0}]", x.Key), x.Value)))
.ToList();
diff --git a/SendGrid/Tests/Transport/TestWebApi.cs b/SendGrid/Tests/Transport/TestWebApi.cs
index 39aa992..6a4fa0c 100644
--- a/SendGrid/Tests/Transport/TestWebApi.cs
+++ b/SendGrid/Tests/Transport/TestWebApi.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Net;
-using System.Net.Mail;
+using System.Net.Mail;
using Moq;
using NUnit.Framework;
using SendGrid;
@@ -36,7 +36,11 @@ namespace Tests.Transport
public void TestFetchFormParams()
{
// Test Variables
- const string toAddress = "foobar@outlook.com";
+ const string toAddress = "foobar@outlook.com";
+ const string ccAddress = "cc@outlook.com";
+ const string bcc1Address = "bcc1@outlook.com";
+ const string bcc2Address = "bcc2@outlook.com";
+ MailAddress[] bccAddresses = {new MailAddress(bcc1Address), new MailAddress(bcc2Address)};
const string fromAddress = "test@outlook.com";
const string subject = "Test Subject";
const string textBody = "Test Text Body";
@@ -47,6 +51,8 @@ namespace Tests.Transport
var message = new SendGridMessage();
message.AddTo(toAddress);
+ message.AddCc(ccAddress);
+ message.Bcc = bccAddresses;
message.From = new MailAddress(fromAddress);
message.Subject = subject;
message.Text = textBody;
@@ -59,6 +65,9 @@ namespace Tests.Transport
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 == bcc1Address));
+ Assert.True(result.Any(r => r.Key == "bcc[]" && r.Value == bcc2Address));
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));