I am trying to read an email item attachment using EWS and save it to disk as a text file so it can be used later on.
I am getting an error:
"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. "
here is my code:
Directory.CreateDirectory(emailAttachmentsPath);
// Put attachment contents into a stream. C:\Dev\EWSHelloWorld
emailAttachmentsPath = emailAttachmentsPath + "\\" + sEmailSubject+".txt";
//save to disk
using (Stream FileToDisk = new FileStream(emailAttachmentsPath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
byte[] ContentBytes = System.Convert.FromBase64String(itemAttachment.ToString());
FileToDisk.Write(ContentBytes, 0,ContentBytes.Length);
FileToDisk.Flush();
FileToDisk.Close();
}
what is the best way to do this please?
I basically want the text of the email in a text file, and any attachments in that email would be saved to disk as well (I can do that part I think using FileStream.
Philip,
You will not be able to use the Convert()
method on an ItemAttachment because it is not Base64 encoded. The item attachment has a lot of properties about the item, and if I understand your request properly you are looking for just the body of the email.
The first thing you will want to consider is adding a check to see if the ItemAttachment is an email message. If it is, there are couple of lines to get to the text of the email body:
itemAttachment.Load(new PropertySet(BasePropertySet.FirstClassProperties));
string BodyText = itemAttachment.Item.Body.Text;
The first line will load the item and it's first class properties. The second line will get the text version of the email body.
I hope this helps. If this does resolve your question, please mark the post as answered.
Thanks,
--- Bob ---