在客户端打开带有附件的 Outlook 应用程序

Open Outlook Application on the Client-side with an Attachment

我无法打开带有来自 Web 服务器的附加文件的 Outlook 应用程序(客户端)。这是我的代码。有什么建议吗?

        Dim app As Microsoft.Office.Interop.Outlook.Application
        Dim appNameSpace As Microsoft.Office.Interop.Outlook._NameSpace
        Dim memo As Microsoft.Office.Interop.Outlook.MailItem
        Dim processes = System.Diagnostics.Process.GetProcessesByName("OUTLOOK")
        Dim collCount As Integer = processes.Length

       If collCount > 0 Then
                app = Marshal.GetActiveObject("Outlook.Application")
                memo = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
                memo.Attachments.Add(Report, Outlook.OlAttachmentType.olByValue, , HttpContext.Current.Session("fileName"))
                memo.Display()
            Else
                Try
                    app = New Microsoft.Office.Interop.Outlook.Application
                    appNameSpace = app.GetNamespace("MAPI")
                    Process.Start("OUTLOOK")
                    memo = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
                    memo.Attachments.Add(Report, Outlook.OlAttachmentType.olByValue, , HttpContext.Current.Session("fileName"))
                    memo.Display()
                Catch ex As Exception
                    Debug.WriteLine(ex.Message)
                End Try
            End If

您不能 - 该代码将 运行 在服务器上,在那里没有人会看到消息。无论如何,您都不能 运行 服务器上的 Outlook。
运行 客户端只能在 IE 中使用,并且只有在您的网站被标记为受信任的情况下才能使用。

但是您可以创建一个 MIME (EML) 文件并让用户从浏览器下载它 - Outlook 会很乐意打开并显示它。要确保它显示为未发送,请将 X-Unsent MIME header 设置为 1。

ASP.NET 代码在服务器端是 运行,所以你至少应该在那里安装 Outlook。您的代码永远不会 运行 在客户端。

I have trouble opening my outlook application(client) with an attached file from web server.

所有当前版本的 Microsoft Office 都经过设计、测试和配置,以 运行 作为客户端工作站上的最终用户产品。他们采用交互式桌面和用户配置文件。它们不提供满足设计为 运行 无人值守的服务器端组件的需要所必需的可重入性或安全性级别。

Microsoft 目前不推荐也不支持来自任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT)的 Microsoft Office 应用程序自动化服务),因为当 Office 在此环境中 运行 时,Office 可能表现出不稳定的行为 and/or 死锁。

如果您要在服务器端上下文中构建 运行 的解决方案,您应该尝试使用已针对无人值守执行安全设置的组件。或者,您应该尝试找到至少允许 运行 客户端部分代码的替代方案。如果您从服务器端解决方案使用 Office 应用程序,该应用程序将缺少许多 运行 成功所必需的功能。此外,您将承担整体解决方案稳定性的风险。

Considerations for server-side Automation of Office 文章中阅读更多相关信息。