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标记为已回答。
谢谢,
—鲍勃—