summaryrefslogtreecommitdiffstats
path: root/SendGrid
diff options
context:
space:
mode:
Diffstat (limited to 'SendGrid')
-rw-r--r--SendGrid/SendGridMail/ISendGrid.cs2
-rw-r--r--SendGrid/SendGridMail/SendGrid.cs33
-rw-r--r--SendGrid/SendGridMail/StreamedFileBody.cs2
-rw-r--r--SendGrid/SendGridMail/Transport/Web.cs11
-rw-r--r--SendGrid/Tests/TestSendgrid.cs71
5 files changed, 97 insertions, 22 deletions
diff --git a/SendGrid/SendGridMail/ISendGrid.cs b/SendGrid/SendGridMail/ISendGrid.cs
index 1d5ea8f..b4fcdc9 100644
--- a/SendGrid/SendGridMail/ISendGrid.cs
+++ b/SendGrid/SendGridMail/ISendGrid.cs
@@ -108,6 +108,8 @@ namespace SendGrid
/// <param name="name">Name of file to be attached</param>
void AddAttachment(Stream stream, String name);
+ void EmbedStreamImage(Stream stream, String name);
+
/// <summary>
/// GetRecipients returns a list of all the recepients by retrieving the to, cc, and bcc lists.
/// </summary>
diff --git a/SendGrid/SendGridMail/SendGrid.cs b/SendGrid/SendGridMail/SendGrid.cs
index 6a3dceb..e4e0d22 100644
--- a/SendGrid/SendGridMail/SendGrid.cs
+++ b/SendGrid/SendGridMail/SendGrid.cs
@@ -20,7 +20,9 @@ namespace SendGrid
private static readonly Regex TemplateTest = new Regex(@"<%\s*body\s*%>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex TextUnsubscribeTest = new Regex(@"<%\s*%>", RegexOptions.Compiled);
private static readonly Regex HtmlUnsubscribeTest = new Regex(@"<%\s*([^\s%]+\s?)+\s*%>", RegexOptions.Compiled);
- #endregion
+ private const string SinkHost = "sink.sendgrid.net";
+
+ #endregion
#region Initialization and Constructors
@@ -96,7 +98,16 @@ namespace SendGrid
public MailAddress[] To
{
- get { return _message.To.ToArray(); }
+ get
+ {
+ if (_sendToSink)
+ {
+ return _message.To
+ .Select(ma => new MailAddress(string.Format("{0}_at_{1}@{2}", ma.User, ma.Host, SinkHost), ma.DisplayName))
+ .ToArray();
+ }
+ return _message.To.ToArray();
+ }
set
{
_message.To.Clear();
@@ -151,8 +162,9 @@ namespace SendGrid
private List<String> _attachments = new List<String>();
private Dictionary<String, MemoryStream> _streamedAttachments = new Dictionary<string, MemoryStream>();
private Dictionary<String, String> _contentImages = new Dictionary<string, string>();
+ private bool _sendToSink;
- public void AddTo(String address)
+ public void AddTo(String address)
{
var mailAddress = new MailAddress(address);
_message.To.Add(mailAddress);
@@ -250,6 +262,16 @@ namespace SendGrid
StreamedAttachments[name] = ms;
}
+ public void EmbedStreamImage(Stream stream, String name)
+ {
+ var ms = new MemoryStream();
+ stream.CopyTo(ms);
+ ms.Seek(0, SeekOrigin.Begin);
+ StreamedAttachments[name] = ms;
+
+ _contentImages[name] = name;
+ }
+
public void AddAttachment(String filePath)
{
_attachments.Add(filePath);
@@ -270,6 +292,11 @@ namespace SendGrid
headers.Keys.ToList().ForEach(key => Headers[key] = headers[key]);
}
+ public void SendToSink(bool value = true)
+ {
+ _sendToSink = value;
+ }
+
#endregion
#region SMTP API Functions
diff --git a/SendGrid/SendGridMail/StreamedFileBody.cs b/SendGrid/SendGridMail/StreamedFileBody.cs
index faa9d59..125fe24 100644
--- a/SendGrid/SendGridMail/StreamedFileBody.cs
+++ b/SendGrid/SendGridMail/StreamedFileBody.cs
@@ -6,7 +6,7 @@ using System.Text;
namespace SendGridMail
{
- public class StreamedFileBody : Body
+ public class StreamedFileBody
{
private string _name;
private string _filename;
diff --git a/SendGrid/SendGridMail/Transport/Web.cs b/SendGrid/SendGridMail/Transport/Web.cs
index 7abf104..cd4bc9d 100644
--- a/SendGrid/SendGridMail/Transport/Web.cs
+++ b/SendGrid/SendGridMail/Transport/Web.cs
@@ -55,8 +55,6 @@ namespace SendGrid
public void Deliver(ISendGrid message)
{
var client = new HttpClient();
-
- client.BaseAddress = new Uri("https://" + BaseUrl);
client.Timeout = _timeout;
var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
@@ -65,7 +63,7 @@ namespace SendGrid
var content = new MultipartFormDataContent();
AttachFormParams(message, content);
AttachFiles(message, content);
- var response = client.PostAsync(Endpoint + ".xml", content).Result;
+ var response = client.PostAsync("https://" + BaseUrl + Endpoint + ".xml", content).Result;
CheckForErrors(response);
}
@@ -76,17 +74,16 @@ namespace SendGrid
public async Task DeliverAsync(ISendGrid message)
{
var client = new HttpClient();
-
- client.BaseAddress = new Uri("https://" + BaseUrl);
client.Timeout = _timeout;
var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
- client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "sendgrid/" + version + ";csharp");
+
+ client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "sendgrid/" + version + ";csharp");
var content = new MultipartFormDataContent();
AttachFormParams(message, content);
AttachFiles(message, content);
- var response = await client.PostAsync(Endpoint + ".xml", content);
+ var response = await client.PostAsync("https://" + BaseUrl + Endpoint + ".xml", content);
await CheckForErrorsAsync(response);
}
diff --git a/SendGrid/Tests/TestSendgrid.cs b/SendGrid/Tests/TestSendgrid.cs
index 168d906..37a9990 100644
--- a/SendGrid/Tests/TestSendgrid.cs
+++ b/SendGrid/Tests/TestSendgrid.cs
@@ -346,17 +346,66 @@ namespace Tests
var json = header.JsonString();
Assert.AreEqual("{\"filters\" : {\"opentrack\" : {\"settings\" : {\"enable\" : \"0\"}}}}", json);
}
+ [Test]
+ public void TestAddSection()
+ {
+ var header = new Header();
+ var sendgrid = new SendGridMessage(header);
- [Test]
- public void TestAddSection()
- {
- var header = new Header();
- var sendgrid = new SendGridMessage(header);
-
- sendgrid.AddSection("tag", "value");
+ sendgrid.AddSection("tag", "value");
- var json = header.JsonString();
- Assert.AreEqual("{\"section\" : {\"tag\" : \"value\"}}", json);
- }
+ var json = header.JsonString();
+ Assert.AreEqual("{\"section\" : {\"tag\" : \"value\"}}", json);
}
-} \ No newline at end of file
+
+ [Test]
+ public void TestSendToSink()
+ {
+ // Arrange
+
+ var message = new SendGridMessage();
+ message.To = new[]
+ {
+ new MailAddress("foo@bar.com", "Foo Bar"),
+ };
+ message.AddTo("foo1@bar1.com");
+
+ // Act
+
+ message.SendToSink();
+
+ // Assert
+
+ Assert.AreEqual("foo_at_bar.com@sink.sendgrid.net", message.To[0].Address);
+ Assert.AreEqual("Foo Bar", message.To[0].DisplayName);
+
+ Assert.AreEqual("foo1_at_bar1.com@sink.sendgrid.net", message.To[1].Address);
+ Assert.AreEqual("", message.To[1].DisplayName);
+ }
+
+ [Test]
+ public void TestSendToSinkOff()
+ {
+ // Arrange
+
+ var message = new SendGridMessage();
+ message.To = new[]
+ {
+ new MailAddress("foo@bar.com", "Foo Bar"),
+ };
+ message.AddTo("foo1@bar1.com");
+ message.SendToSink();
+
+ // Act
+
+ message.SendToSink(false);
+
+ // Assert
+
+ Assert.AreEqual("foo@bar.com", message.To[0].Address);
+ Assert.AreEqual("Foo Bar", message.To[0].DisplayName);
+
+ Assert.AreEqual("foo1@bar1.com", message.To[1].Address);
+ Assert.AreEqual("", message.To[1].DisplayName);
+ }
+}