【问题标题】:How do I open a file attachment from Outlook with my winform application?如何使用我的 winform 应用程序从 Outlook 打开文件附件?
【发布时间】:2015-10-27 00:15:39
【问题描述】:

我编写了一个 winform 应用程序并使用 Inno Setup 创建了一个安装程序,以便与它关联一个自定义文件扩展名。

应用程序已设置好,如果双击关联的文件类型,应用程序会自动打开并加载文件。如果从桌面或文件资源管理器双击文件,这可以正常工作。

但是,我们在尝试从 Outlook 中打开文件附件时发现了一个问题。正在生成此错误:

System.UnauthorizedAccessException

我在我的应用程序中发现了错误并检查了提供给程序的文件路径。它在文件系统中不存在(当我尝试浏览它时)。

C:\User\MyUserName\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\MXIIIP00\MyFilename.CustomExtension

...\Microsoft\Windows\ 之后的部分不存在(据我所知)。

有其他人遇到过这个问题并知道如何解决吗?

更新:

如果我打开一个 dos 提示 - 我实际上可以到达这个位置,即使它没有显示在 Windows 资源管理器中。

更新 2:

如果我将路径直接复制到 Windows 资源管理器中,我也可以在此处看到文件。但是,如果我从这里双击文件 - 我的应用程序仍然无法加载文件。

更新 3:

Outlook 保存的文件(以及我的应用程序正在尝试打开的文件)似乎是空的。这可以解释为什么我的应用程序无法处理它。当我发送文件时,Outlook 似乎正在对文件执行某些操作。当我发送它时它开始为 72KB,但当我收到它时 - 它是 252B。

【问题讨论】:

    标签: c# winforms outlook attachment


    【解决方案1】:

    这是授权的问题。

    您可以尝试在管理员模式下运行您的应用程序和 Outlook 以获得成功 - 至少这是强制性的,在相同的授权级别运行两者。

    或者甚至尝试在 Windows TEMP 文件夹中打开您的附件...但我猜如果您不以编程方式将附件提取到该文件夹​​并打开它,您将无法从 Outlook 中获取它。

    【讨论】:

    • 谢谢伙计,你的第二个建议让我找到了答案。
    【解决方案2】:

    好吧,事实证明这里有两个问题。

    首先是关于我是如何测试这个功能的。为了模拟发送给客户的文件,我使用 Outlook 将我的文件作为附件发送给我自己的电子邮件。由于某些(目前尚不清楚)的原因,Outlook 会自行向我发送一个空文件。当我登录外部电子邮件客户端并将文件发送到 Outlook 时,文件保持不变。

    但是,我的应用程序仍然无法打开它。

    第二个问题是创建的临时文件设置了只读属性。一旦我将应用程序设置为关闭此功能,一切正常。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多