Exchange Web服务 – 将电子邮件附件从Base64字符串转换为字节提供错误

我正在尝试使用EWS读取电子邮件附件,并将其作为文本文件保存到磁盘,以便以后使用。

我收到一个错误:

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

这是我的代码:

 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(); } 

请问最好的方法是什么?

我基本上想在文本文件中使用电子邮件的文本,并且该电子邮件中的任何附件也将保存到磁盘(我可以使用FileStream来完成该部分。

菲利普,

您将无法在ItemAttachment上使用Convert()方法,因为它不是Base64编码的。 项目附件有很多关于项目的属性,如果我正确理解您的请求,您只需要查找电子邮件的正文。

您要考虑的第一件事是添加一个检查以查看ItemAttachment是否是电子邮件消息。 如果是,有几行可以访问电子邮件正文的文本:

 itemAttachment.Load(new PropertySet(BasePropertySet.FirstClassProperties)); string BodyText = itemAttachment.Item.Body.Text; 

第一行将加载项目,它是第一类属性。 第二行将获取电子邮件正文的文本版本。

我希望这有帮助。 如果这确实解决了您的问题,请将post标记为已回答。

谢谢,

—鲍勃—