diff options
author | Brandon West <brawest@gmail.com> | 2013-01-14 10:27:09 -0700 |
---|---|---|
committer | Brandon West <brawest@gmail.com> | 2013-01-14 10:27:09 -0700 |
commit | 5e3d31b8d07c253161aeb8532d40185f95b3cfa4 (patch) | |
tree | cf185d99a4bb165cb4b74edfeb59435148adfed2 | |
parent | ce34793a0a9ccbdd8076bc713e4fe389372bec16 (diff) | |
download | sendgrid-csharp-5e3d31b8d07c253161aeb8532d40185f95b3cfa4.zip sendgrid-csharp-5e3d31b8d07c253161aeb8532d40185f95b3cfa4.tar.gz sendgrid-csharp-5e3d31b8d07c253161aeb8532d40185f95b3cfa4.tar.bz2 |
attaching files works
-rwxr-xr-x | SendGrid/Example/WEBAPI.cs | 14 | ||||
-rw-r--r-- | SendGrid/SendGridMail/Transport/Web.cs | 14 | ||||
-rwxr-xr-x | SendGrid/SendGridMail/Utils.cs | 14 |
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();
+ }
+ }
+
}
}
|