سؤال

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 ---

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top