summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrandon West <brawest@gmail.com>2013-01-14 10:27:09 -0700
committerBrandon West <brawest@gmail.com>2013-01-14 10:27:09 -0700
commit5e3d31b8d07c253161aeb8532d40185f95b3cfa4 (patch)
treecf185d99a4bb165cb4b74edfeb59435148adfed2
parentce34793a0a9ccbdd8076bc713e4fe389372bec16 (diff)
downloadsendgrid-csharp-5e3d31b8d07c253161aeb8532d40185f95b3cfa4.zip
sendgrid-csharp-5e3d31b8d07c253161aeb8532d40185f95b3cfa4.tar.gz
sendgrid-csharp-5e3d31b8d07c253161aeb8532d40185f95b3cfa4.tar.bz2
attaching files works
-rwxr-xr-xSendGrid/Example/WEBAPI.cs14
-rw-r--r--SendGrid/SendGridMail/Transport/Web.cs14
-rwxr-xr-xSendGrid/SendGridMail/Utils.cs14
3 files changed, 38 insertions, 4 deletions
diff --git a/SendGrid/Example/WEBAPI.cs b/SendGrid/Example/WEBAPI.cs
index 985005d..d52786d 100755
--- a/SendGrid/Example/WEBAPI.cs
+++ b/SendGrid/Example/WEBAPI.cs
@@ -5,6 +5,7 @@ using System.Net;
using System.Net.Mail;
using SendGridMail;
using SendGridMail.Transport;
+using System.IO;
namespace Example
{
@@ -46,6 +47,19 @@ namespace Example
//set the message subject
message.Subject = "Hello World HTML Test";
+ //add a file from stream
+ var file = "bar";
+
+ var memoryStream = new MemoryStream();
+ var stream = new StreamWriter(memoryStream);
+ stream.Write(file);
+ message.AddAttachment(memoryStream, "foo.txt");
+ stream.Flush();
+ stream.Close();
+
+ //add a file from disk
+ message.AddAttachment("test.txt");
+
//create an instance of the Web transport mechanism
var transportInstance = Web.GetInstance(new NetworkCredential(_username, _password));
diff --git a/SendGrid/SendGridMail/Transport/Web.cs b/SendGrid/SendGridMail/Transport/Web.cs
index 27dceb6..b05d5c5 100644
--- a/SendGrid/SendGridMail/Transport/Web.cs
+++ b/SendGrid/SendGridMail/Transport/Web.cs
@@ -68,12 +68,17 @@ namespace SendGridMail.Transport
formParams.ForEach(kvp => request.AddParameter(kvp.Key, kvp.Value));
}
- private void AttachFiles(ISendGrid message, RestRequest request)
- {
+ private void AttachFiles (ISendGrid message, RestRequest request)
+ {
//TODO: think the files are being sent in the POST data... but we need to add them as params as well
- var files = FetchFileBodies(message);
- files.ForEach(kvp => request.AddFile(Path.GetFileName(kvp.Key), kvp.Key));
+ var files = FetchFileBodies (message);
+ foreach (KeyValuePair<string, FileInfo> file in files) {
+ var name = Path.GetFileName(file.Key);
+ FileStream stream = File.OpenRead(file.Value.FullName);
+ request.AddParameter("files[" + Path.GetFileName(file.Key) + "]", Utils.ReadFully(stream));
+ stream.Close();
+ }
var streamingFiles = FetchStreamingFileBodies(message);
foreach (KeyValuePair<string, MemoryStream> file in streamingFiles) {
@@ -87,6 +92,7 @@ namespace SendGridMail.Transport
);
request.AddFile(name, writer, name);
+ //request.AddParameter("files[" + name + "]","");
}
}
diff --git a/SendGrid/SendGridMail/Utils.cs b/SendGrid/SendGridMail/Utils.cs
index 31fe92f..c6f4386 100755
--- a/SendGrid/SendGridMail/Utils.cs
+++ b/SendGrid/SendGridMail/Utils.cs
@@ -28,5 +28,19 @@ namespace SendGridMail
return "{"+String.Join(",",dic.Select(kvp => Serialize(kvp.Key) + ":" + Serialize(kvp.Value)))+"}";
}
+ public static byte[] ReadFully(Stream input)
+ {
+ byte[] buffer = new byte[16*1024];
+ using (MemoryStream ms = new MemoryStream())
+ {
+ int read;
+ while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
+ {
+ ms.Write(buffer, 0, read);
+ }
+ return ms.ToArray();
+ }
+ }
+
}
}