DocumentItem.SaveAs导致文件损坏

时间:2016-02-24 10:38:57

标签: c# file outlook outlook-addin

在outlook中,我在收件箱等文件夹中有各种DocumentItems,我试图在拖放事件中将这些文件保存到文件系统。

以下是代码:

for (var i = 1; i <= _application.ActiveExplorer().Selection.Count; i++)
{
    var temp = _application.ActiveExplorer().Selection[i];

    var documentItem = (temp as DocumentItem);
    if (documentItem == null)
        continue;
    var tempFileName = Path.GetTempPath() + documentItem.Subject;
    documentItem.SaveAs(tempFileName);
}

它们似乎成功保存并具有文件大小: enter image description here

但是当我尝试打开其中任何一个时,他们都说他们无法打开,所以他们在某种程度上被腐蚀了,有没有人有任何想法?

enter image description here

1 个答案:

答案 0 :(得分:2)

您在不指定格式的情况下调用SaveAs,Outlook对象模型将其默认为olMsg。您最终获得了带有JPG扩展名的MSG文件。

您需要做的是遍历DocumentItem.Attachments集合中的所有附件并调用Attachment.SaveAsFile。您可能还想使用Attachmeent.FileName属性。

只是一般性评论 - 多点符号是邪恶的,尤其是在厕所中:

Selection selection = _application.ActiveExplorer().Selection;
for (var i = 1; i <= selection.Count; i++)
{
   var temp = selection[i];
   var documentItem = (temp as DocumentItem);
   ...